Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Ayuda puerto serie (https://www.clubdelphi.com/foros/showthread.php?t=65832)

ferranvic 15-01-2010 18:26:42

Ayuda puerto serie
 
Hola a todos, espero que alguien pueda ayudarme, hace años que no toco la programación y tengo que realizar una aplicación que se comunique con una maquina a traves del puerto serie. Hace años hize una pero no recuerdo casi nada de lo que hice.
La maquina usa el protocolo que empieza con el caracter ETX + mensaje + CRC + STX, he instalado el componente Async Pro que es el que use hace años, mi duda es como tengo que enviar la cadena, es decir send := '02' + cadena mensaje + calcular el CRC + '03' o estos caracteres debo convertirlos con CHR o char, o como, alguien puede hecharme una mano, gracias

cocute 15-01-2010 22:02:25

aqui hay un ejemplo de como Controlar dispositivos por el puerto serie en Delphi, aunque no sea con el componente que dices quiza pueda darte alguna idea:
http://delphi.jmrds.com/?q=node/8

ferranvic 17-01-2010 14:02:04

Ante todo gracias por la respuesta cocute


He hecho mis primeros pasos, estoy intentando con el siguiente código, y usando de las Asyncpro el ApdComPort y el ApdDataPacket, con la siguiente configuración:

ApdComPort.baud := 9600
ComNumber := 1
DataBits := 1
Parity := pNone
StopBits := 1

que es la configuración de la máquina con la que quiero conectar, y el DataPacket de la siguiente forma:

EndStrign := #3 (^C)
StartString := #2 (^B)

el resto de parámetros están por defecto.

el código es el siguiente

procedure TForm1.Button1Click(Sender: TObject);
var
Msg: String;
S: String;
CRCValue: Word;
begin
S := '200'; // Mensage que tiene que poner en marcha la máquina <STX><2><0><0><CRC><ETX>

CalcCRC16(Addr(S[1]), length(S), CRCValue);
Edit1.Text := IntToStr(CRCValue);
Msg := S + IntToStr(CRCValue);
ShowMessage('Ok');
Edit1.Text := Msg;

ApdComPort1.Open := True;
ApdComPort1.PutString(Msg);


while true do
begin
Memo1.Text := Memo1.TExt + ApdComPort1.GetChar;
ShowMessage('Ok');
end;

end;


Imagino que algo hago mal, ya que la máquina no se inmuta y no recibo ninguna respuesta, gracias


La franja horaria es GMT +2. Ahora son las 09:16:23.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi