Red de conocimiento informático - Problemas con los teléfonos móviles - Recibir código fuente

Recibir código fuente

Debido a que no dejó en claro que no recibió los datos en absoluto, o que su programa receptor no se ejecutó normalmente, le sugiero que observe los siguientes aspectos:

1. velocidad en baudios, los parámetros como los dígitos de control se configuran de acuerdo con las regulaciones de comunicación;

2. Asegúrese de que el control del puerto serie esté abierto y pueda funcionar normalmente, y establezca un punto de interrupción dentro de TfrmComm. CommReceiveData() para ver si el evento se activó y cuál era el BufferLength cuando se activó.

3. Corrija un simple error en su comprensión de la sintaxis: put move (buffer, pchar (strrecv), buffer length

Reemplazar con...

str recv:="";

para I:= 0 a Longitud del búfer-1 haga strRecv:= strRecv+PChar(Buffer)[I];

Pchar (strRecv) representa un puntero generado temporalmente y los datos de strRecv se copian temporalmente al búfer señalado por el puntero. El puntero temporal solo se usa para pasar los parámetros que se van a mover y no será válido si se devuelve la función.

Además, si fuera yo, no definiría strRecv como una cadena, sino como una matriz de bytes o como una matriz de caracteres, y luego usaría SetLength para asignar memoria como de costumbre, pero lo anterior; El bucle será mucho más eficiente. Más, el pensamiento es mucho más claro. Por supuesto, si desea pasar este búfer para su uso, debe ir acompañado de otro número entero para representar la longitud.

Por supuesto, si lo defines como yo, debes agregar la declaración correspondiente aquí para liberar la memoria.