Konuyu Oyla:
  • Derecelendirme: 0/5 - 0 oy
  • 1
  • 2
  • 3
  • 4
  • 5
Modbüs veri göndermek
#1
Star 
Aşağıdaki resimdeki gibi bir karakter setini elimizdeki bir terminale gönderip, bir mekanizmayı tetikleyebiliyoruz. 
Bu karakter setini Delphi tarafından nasıl / hangi formatta gönderebilirim.
Doğrudan $01$03$01$20$00$14$29$CF string olarak gönderiyorum. Fakat sonuç alamıyorum.
Yardımcı olabilir misiniz?
Cevapla
#2
Öncelikle RS232 ile doğru Com port'u açabiliyor musunuz ? Eğer cevabınız evet ise yazdığınız değeri, GonderilecekDegisken := #$01#$06#$00#$22 ... şeklinde atadıktan sonra gönderin.
Ayrıca kullandığınız program yani "Hercule" ne yazarsanız onu gönderir. Yani "$" işaretini Hex olarak algılamaz. Oysa Delphi'de bunun karşılığı HEX demektir.
Cevapla
#3
(29-09-2021, Saat: 13:48)enigma Adlı Kullanıcıdan Alıntı: Öncelikle RS232 ile doğru Com port'u açabiliyor musunuz ? Eğer cevabınız evet ise yazdığınız değeri, GonderilecekDegisken := #$01#$06#$00#$22 ...  şeklinde atadıktan sonra gönderin.
Ayrıca kullandığınız program yani "Hercule" ne yazarsanız onu gönderir. Yani "$" işaretini Hex olarak algılamaz. Oysa Delphi'de bunun karşılığı HEX demektir.

Evet com porta open ile sorunsuz bağlanıyorum. #$01#$06#$00#$22 bu formatta deneyeceğim.
Cevapla
#4
Sonuç alabildiniz mi ?
Cevapla
#5
(30-09-2021, Saat: 10:53)enigma Adlı Kullanıcıdan Alıntı: Sonuç alabildiniz mi ?

Henüz test etme imkanım olmadı. 
Cihaz siparişi verdim. 
gelince test edip, sonuç bildireceğim.
İlginiz için teşekkür ederim.
Cevapla
#6
Tüm karakterleri arada $ işareti olmadan aşağıdaki yöntemle gönderebildim.
Yardımcı olan arkadaşlara teşekkür ederim.

procedure Tfrm1.btToHexClick(Sender: TObject);
var
 LStr1, LStr2: String;
 begin
 LStr1 := Edit1.Text;
 SetLength(LStr2, Length(LStr1) * 4);
 BinToHex(LStr1[1], PWideChar(LStr2), Length(LStr1) * SizeOf(Char));
 FComPort.WriteString(LStr2);
end;

Kaynak:
BinHexMethods
Cevapla




Konuyu Okuyanlar: 1 Ziyaretçi