Comm1.CommName := ‘//./‘ + Trim(combx_Port.Text);
目前串口大于20 用上面方法解决的
网上也有上面方法解决如下错误的。
若是您已会应用SPCOMM且涌现10个以上的串心题目 请改一下串心名 COM1.CommName=‘//./com18‘; 便如许减‘//./‘就好了我也没有晓得甚么回事....... 比方 Comm1.CommName := ‘//./‘+ComboBox1.Text; //./com18是win]
如果你已经会使用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这里就出错了
串口总是报'Error opening serial port'