Seriporta byte veri gönderme

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

Seriporta byte veri gönderme

Mesaj gönderen Bay_Y »

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
Kıdemli Üye
Mesajlar: 1651
Kayıt: 12 Eyl 2015 12:45

Re: Seriporta byte veri gönderme

Mesaj gönderen ertank »

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: 116
Kayıt: 10 Mar 2014 11:12
Konum: İstanbul

Re: Seriporta byte veri gönderme

Mesaj gönderen Bay_Y »

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
Kıdemli Üye
Mesajlar: 1651
Kayıt: 12 Eyl 2015 12:45

Re: Seriporta byte veri gönderme

Mesaj gönderen ertank »

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: 116
Kayıt: 10 Mar 2014 11:12
Konum: İstanbul

Re: Seriporta byte veri gönderme

Mesaj gönderen Bay_Y »

Ç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.
UlanReed
Üye
Mesajlar: 1
Kayıt: 06 Ara 2018 02:42

Re: Seriporta byte veri gönderme

Mesaj gönderen UlanReed »

Herkese merhaba!
  Sanal portları açıklığa kavuşturmak istedim. https://www.eltima.com/products/vspdxp/ 'nin 32 ve 64 sistemlerinde çalışma yeteneğine sahip olduğunu biliyorum. Ayrıca, program kapatıldığında, com portları kaybolmaz, bu da korkmadan çalışmaya devam etmeyi mümkün kılar.
Cevapla