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

如果你已经会使用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这里就出错了

猜你喜欢

转载自blog.csdn.net/yunqian09/article/details/5318065