请问各位大神,DELPHI XE 10.4串口通信用什么控件? 我用SPCOMM 3.1,串口可以接收到数据,但发送不了数据。发送时正常返回,不报错,就是没有发送数据。 发送代码: S: AnsiString; S := mmoSend.text; FComm.WriteCommData(@S[1], length(S)); SPCOMM控件中实现部分: function TComm.WriteCommData( pDataToWrite: PChar; dwSizeofDataToWrite: Word ): Boolean; var Buffer: Pointer; begin if (WriteThread <> nil) and (dwSizeofDataToWrite <> 0) then begin Buffer := Pointer(LocalAlloc( LPTR, dwSizeofDataToWrite+1 )); Move( pDataToWrite^, Buffer^, dwSizeofDataToWrite ); FSendDataEmpty := False; if PostThreadMessage( WriteThread.ThreadID, PWM_COMMWRITE, WPARAM(dwSizeofDataToWrite), LPARAM(Buffer) ) then begin Result := True; Exit end end;
Result := False end;
----------------------------------------------
-
没用过SPCOMM(都是用Cport),看了源码,没发现有处理单字节和双字节字符的地方,带的Demo也是有D7和XE5的,但是它传递的长度都是Lenght(S),这个不是有问题吗?奇怪了,双字节时,length是字节数/2,这个3.1版本是别人改的: // Version 3.0 1999/5/31 // - Modify some error from source code,and can send data without // lose any byte.Modified some error about the SENDEMPTY property, // so it can be checked in applicaiton. // // Version 3.1 2013/11/06 Modified by HDW 1046500219@qq.com // 1. Add new property Connected; // 2. modify implementation of CommName property: Can use any WinNT Comm Port (1 to 254), // including virtual comm ports // 3. DEMO: (SPCommDemoXE5 and SPCommD7)
这样的 function WriteCommData( pDataToWrite: PChar; dwSizeofDataToWrite: Word ): Boolean; 当传字符串时(字节数组肯定可以),在D7和XE5下同时可以用?请大侠们解惑........
----------------------------------------------
-