Hola, desde hace unos días he estado intentando replicar un código hecho en Python a Delphi con el fin de conectar un monedero y billetero(Para máquinas de venta como las de refrescos) a mi sistema por medio de una Interfaz EasyMDB Universal:
https://mayavending.com/descargas/#1...-05582acf-45e0
soy nuevo con el Componente ComPort y la verdad no encuentro la forma de replicar en específico éstas líneas del código de Pyhton
Código:
checksum = 0x02+0x0c+0xff
checksum = checksum & 0x00ff
string_send = [0x02,0x05,0xff,checksum]
ser.write(string_send)
data = ser.read(27)
Intenté hacerlo de la siguiente forma:
Código:
checksum := StrToInt('$' + '02') + StrToInt('$' + '0c') + StrToInt('$' + 'ff');
checksum := checksum and StrToInt('$' + 'ff');
//Aqui empiezan mis problemas, pues el código original manda un arreglo de hexadecimales y yo una cadena de ellos
string_send := '$02' + '$0c' + '$ff' + IntToStr(checksum);
//La razón por la que en el código anterior concateno los hexadecimales como String es por que hasta donde he podido investigar el WriteStr de Comport sólo acepta un String y no un arreglo y para el caso de Write me pide un Buffer(Void Type) y un Count(Integer)
FrmMain.ComPort1.WriteStr(string_send);
//Y peor aún, el ReadStr y Read me piden dos parámetros(Un String e Integer y un Buffer e Integer respectivamente) y además de que no se que enviar como parámetro más que el Integer, me dice que lo que regresa es un entero y yo necesito que regrese una cadena de datos específicos de longitud igual al parámetro Integer enviado
data := IntToStr(FrmMain.ComPort1.ReadStr(27));
Quizá sea demasiada ambigua mi explicación pero si alguien pudiera ayudarme se los agradecería mucho.