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.
Seriporta byte veri gönderme
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
Re: Seriporta byte veri gönderme
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/
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/
Re: Seriporta byte veri gönderme
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.
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.
Re: Seriporta byte veri gönderme
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:
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.
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));
Re: Seriporta byte veri gönderme
Ç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.
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.
Re: Seriporta byte veri gönderme
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.
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.