1,串口波特率,校驗位等參數都是按照通信規定設置的;
2.確保串口控件已經打開,可以正常工作,在TfrmComm內部設置斷點。CommReceiveData()來查看事件是否被觸發以及觸發時的BufferLength是多少。
3.請糾正妳對語法理解上的壹個簡單錯誤:put move (buffer,pchar (strrecv),buffer length);
用…替換
str recv:=“”;
for I:= 0 to Buffer length-1 do strRecv:= strRecv+PChar(Buffer)[I];
Pchar(strRecv)表示臨時生成的指針,strRecv的數據被臨時復制到指針所指向的緩沖區中。臨時指針只是用來傳遞要移動的參數,如果返回函數就無效了。
而且,如果是我,我不會把strRecv定義成string,而是byte的數組;;或者char的數組,然後像往常壹樣使用SetLength分配內存,但是上面的循環會高效得多,思路也清晰得多。當然,如果要將這個緩沖區傳遞出去使用,就必須伴隨另壹個整數來表示長度。
當然,如果妳像我壹樣定義的話,妳得在這裏加壹個相應的語句來釋放內存。