串口通讯问题 ( 积分: 100 )

  • 主题发起人 主题发起人 dxj1976
  • 开始时间 开始时间
D

dxj1976

Unregistered / Unconfirmed
GUEST, unregistred user!
Temp:='COM6';<br>&nbsp;&nbsp;hComm:=CreateFile(PChar(Temp),&nbsp;GENERIC_READ&nbsp;or&nbsp;GENERIC_WRITE,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0,&nbsp;nil,&nbsp;OPEN_EXISTING,&nbsp;0,&nbsp;0);//&nbsp;打开COM<br>[red]【选择的是串口三以上的口就会触发以下代码】[/red]<br>&nbsp;&nbsp;if&nbsp;(hComm&nbsp;=&nbsp;INVALID_HANDLE_VALUE)&nbsp;then<br>&nbsp;&nbsp;begin//如果COM&nbsp;未打开<br>&nbsp;&nbsp;&nbsp;&nbsp;MessageBox&nbsp;(0,&nbsp;'打开通信端口错误!!','',MB_OK);<br>&nbsp;&nbsp;&nbsp;&nbsp;exit;<br>&nbsp;&nbsp;end;<br><br>&nbsp;&nbsp;GetCommState(hComm,cc.dcb);&nbsp;//&nbsp;得知目前COM&nbsp;的状态<br>&nbsp;&nbsp;cc.dcb.BaudRate:=CBR_9600;&nbsp;&nbsp;//&nbsp;设置波特率为9600<br>&nbsp;&nbsp;cc.dcb.ByteSize:=8;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//字节为&nbsp;8&nbsp;bit<br>&nbsp;&nbsp;cc.dcb.Parity:=NOPARITY;&nbsp;&nbsp;//&nbsp;Parity&nbsp;为&nbsp;None<br>&nbsp;&nbsp;cc.dcb.StopBits:=ONESTOPBIT;//&nbsp;1&nbsp;个Stop&nbsp;bit<br><br>&nbsp;&nbsp;if&nbsp;not&nbsp;SetCommState(hComm,&nbsp;cc.dcb)&nbsp;then&nbsp;begin//&nbsp;设置COM&nbsp;的状态<br>&nbsp;&nbsp;&nbsp;&nbsp;MessageBox&nbsp;(0,&nbsp;'通信端口设置错误!!!','',MB_OK);<br>&nbsp;&nbsp;&nbsp;&nbsp;CloseHandle(hComm);//关闭通信端口<br>&nbsp;&nbsp;&nbsp;&nbsp;exit;<br>&nbsp;&nbsp;end;<br>这是在DELPHI7里打开串口的一段代码,当temp的值是“COM1、COM2、&nbsp;COM3”时打开串口正常,如果是三口以上的串口则提示“打开通信端口错误”。实际我的计算机在设备管理器里只能看到三个串口,其中有一个是MODEM的。请高手尽快解决,我在线等待。谢谢
 
呵呵,你到注册表HKEY_LOCAL_MACHINE/HARDWARE/DEVICEMAP/SERIALCOMM&nbsp;下面看看,COM1、COM2是串口没错,COM3应该也是并行或者串行设备,用CreateFile也能打开,<br>使用时会有问题。
 
这个我知道啊。。。。我现在关心的是为什么用CreateFile打不开COM3以上的串口????
 
存不存在COM3以上的串口
 
不存在。。。。
 
你在dcb配置中有没有设置串口6,dcb配置中是基础的,如果没有你配置一下,然后将电脑的端口指向com6,电脑打印机属性选项中可以设置,再调试一下程序!看能不能使!
 
晕,就是了吗,不存在怎么用啊,你把注册表里的COM1、COM2、COM3改成COM4、COM5、COM6就可以用了嘛
 
Temp:='//./COM6';
 
既然知道你机子上只有3个串口,3个以上不存在,怎么打开?
 
用VC开发的接口就算机子上没有的串口也可以打开啊。。。。<br>只是通讯的时候不成功罢了。。。。<br>是VC与DELPHI的区别吗
 
用VC开发的接口就算机子上没有的串口也可以打开?&nbsp;如果这样的话,那就是&nbsp;VC&nbsp;的缺陷了。<br>其实用VC开发的接口如果机子上没有的串口也是打不开的,只是用的接口没有提示而已。<br>用&nbsp;Delphi&nbsp;开发,你用&nbsp;try&nbsp;...&nbsp;except&nbsp;...&nbsp;end&nbsp;并且遇到串口打不开时不提示,效果就一样了。
 
后退
顶部