Delphi使用spcomm串口通信 串口号大于10出错的解决办法


本文整理自网络,侵删。

 
如果你已经会使用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防止因系统崩溃而丢失任务栏的图标(重建托盘图标)

怀念一下这些经常不记得的Delphi代码

Delphi winapi: loadstring - 从资源中载入字符串

Delphi中的record怎么动态分配内存?

Delphi 杀系统进程代码

Delphi 从indy9升级到indy10时idtcpserver的变化

Delphi xe5调用外部扫描程序――谷歌 zxing

webbrowser点击没有id和name的按钮或链接

Delphi firedac 下的 sqlite [7] - 备份、优化、事务(transaction)

更多相关阅读请进入《Delphi》频道 >>



打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...