本文整理自网络,侵删。
如果你已经会使用SPCOMM且出现10个以上的串口问题请改一下串口名COM1.CommName='//./com18';就这样 加'//./'就行了我也不知道什么回事.......比如Comm1.CommName := '//./'+ComboBox1.Text;
//./com18是windows里边的SymbolLinkName,这个在WINAPI里边就需要这 样写,SPCOMM的这部分的源代码如下: procedure TComm.StartComm; var hNewCommFile: THandle; begin // Are we already doing comm? if (hCommFile <> 0) then raise ECommsError.Create( 'This serial port already opened' );
hNewCommFile := CreateFile( PChar(FCommName), & lt;------就是这里,要加上//./ GENERIC_READ or GENERIC_WRITE, 0, {not shared} nil, {no security ??} OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL or FILE_FLAG_OVERLAPPED, 0 {template} ); if hNewCommFile = INVALID_HANDLE_VALUE then raise ECommsError.Create( 'Error opening serial port' ); 如果不是 SymbolLinkName写法,串口号大于9这里就出错了来源:http://blog.sina.com.cn/s/blog_14c50030e0102y900.html
相关阅读 >>
Delphi防止因系统崩溃而丢失任务栏的图标(重建托盘图标)
Delphi winapi: loadstring - 从资源中载入字符串
Delphi 从indy9升级到indy10时idtcpserver的变化
Delphi firedac 下的 sqlite [7] - 备份、优化、事务(transaction)
更多相关阅读请进入《Delphi》频道 >>