Seriporta byte veri gönderme

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Bay_Y
Üye
Mesajlar: 87
Kayıt: 10 Mar 2014 11:12
Konum: İstanbul

Seriporta byte veri gönderme

Mesaj gönderen Bay_Y » 22 Ara 2017 11:47

Herkese merhabalar ;

Seriport üzerinden com porta veri göndermek istiyorum , 27, 55, 112 gibi yazılması gereken byte verisi bunlar ,

aslında zlyseriport componentinde aşağıdaki gibi bir fonksiyon var burdan direk gönderdim işe yaramadı.

zylseriport.open;
zylseriport.SendByte(27) ;
zylseriport.SendByte(55) ;
zylseriport.SendByte(112) ;


sonrasında aşağıdaki şekilde denedim ekleyip yine olmadı.

var
lstStr: TStringList;
sentStr: AnsiString;
i: Integer;
begin
lstStr := TStringList.Create;
ExtractStrings(['#'], [' '], PChar(edit1.Text), lstStr);
sentStr := '';
for i := 0 to lstStr.Count -1 do
begin
try
sentStr := sentStr + Chr(StrToInt(lstStr));
except
end;
end;
lstStr.Free;
SerialPort.SendChars(sentstr);
end;

fikri olan var mıdır ?

teşekkürler.

ertank
Üye
Mesajlar: 964
Kayıt: 11 Eyl 2015 11:45

Re: Seriporta byte veri gönderme

Mesaj gönderen ertank » 22 Ara 2017 12:54

Merhaba,

Anladığım kadarıyla ilk yönteminiz doğru. Ancak zylserialport bileşenini kullanmadım. Eğer SendByte() bir prosedür değil fonksiyon ise muhtemelen Boolean veya Integer gibi bir değer çevirir. Bu çevirdiği değer işlemi başarılı bir şekilde yapıp yapmadığını anlamanızı sağlayabilir.

Ayrıca gönderdiğiniz verinin doğru olduğunu test edebilmek adına aşağıdaki veya bezeri bir seri port emülatör uygulaması kullanmanızda fayda var.
https://freevirtualserialports.com/

Bay_Y
Üye
Mesajlar: 87
Kayıt: 10 Mar 2014 11:12
Konum: İstanbul

Re: Seriporta byte veri gönderme

Mesaj gönderen Bay_Y » 22 Ara 2017 01:52

teşekkür ederim Ertan bey ,
programı indirdim gönderdiğim veriye baktığımda
27 için 1B gelmiş sanırım ESC kodu ama 112 için mesela 70 gelmiş ben 112 nasıl gönderebilirim. veya gönderdiğim değerleri okumak için ne yapmam gerekiyor.

ertank
Üye
Mesajlar: 964
Kayıt: 11 Eyl 2015 11:45

Re: Seriporta byte veri gönderme

Mesaj gönderen ertank » 22 Ara 2017 02:27

Decimal 27 = Hexadecimal 1B
Decimal 112 = Hexadecimal 70

Eğer sizin göndermeniz gereken byte değil 27 ve 112 değerleri ise bu defa aşağıdaki gibi kullanmanız gerekiyor olabilir:

Kod: Tümünü seç

zylseriport.SendChars(IntToStr(27));
zylseriport.SendChars(IntToStr(112));
Yapmaya çalıştığınız sanki eski iletişim yöntemlerine benziyor. İlgili cihazın dökümanını okumakta fayda var. Zira belki ilk yaptığınız yöntem doğru ama komut göndermeye başlayacağınızı "AT+Z" benzeri bir komut ile belirtmeniz gerekiyor.

Bay_Y
Üye
Mesajlar: 87
Kayıt: 10 Mar 2014 11:12
Konum: İstanbul

Re: Seriporta byte veri gönderme

Mesaj gönderen Bay_Y » 22 Ara 2017 02:56

Çok teşekkür ederim Ertan Bey
her zamanki gibi yine sayenizde sorun çözüldü , port ayarları ile ilgili bir sorun olduğunu farkettim. Baudrate 4800 kalmış 9600 olması gerekirken.

teşekkürler.

Cevapla