Recibir código fuente
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.