问题: 求助:SPCOMM控件怎么判断它的状态? ( 积分: 15 )
分类: 局域网 / 通讯
来自: wei0916, 时间: 2005-07-29 20:41:00, ID: 3150713
求助:SPCOMM控件怎么判断它的状态?在DELPHI里使用它的时候,用MSCOMM控件的时候,有一个很好的参数,就是IF MSCOMM1.PORTOPEN THEN........
而对SPCOMM,就算打开了某个串口,下次再次去调用某个串口的时候,却不知其是否已经打开,如果直接用SPCOMM.COMMNAME="COM1",然后用SPCOMM.STARTCOMM,这样肯定会出错.不知哪位大虾能指教一下怎样能获取SPCOMM的当前状态是否已经打开...
来自: 唐佐平, 时间: 2005-07-29 20:48:28, ID: 3150719
用一个变量记录下它的状态,其他应该没有什么好办法了。
来自: maxim88, 时间: 2005-08-01 14:19:24, ID: 3152741
Try Comm1.StartComm
except
ShowMessage(Comm1.CommName+'不存在或被占用!');
exit;
end;
来自: wei0916, 时间: 2005-08-01 20:18:49, ID: 3153082
如果能利用MSCOMM的PORTOPEN属性就好了,IF MSCOMM1.PORTOPEN THEN
MSCOMM1.PORTOPEN=FALSE
MSCOMM1.COMMPORT=1
MSCOMM1.SETTING='9600,N,8,1'
MSCOMM1.PORTOPEN=TRUE
ELSE
MSCOMM1.COMMPORT=1
MSCOMM1.SETTING='9600,N,8,1'
MSCOMM1.PORTOPEN=TRUE
END IF
在程序运行的过程里可以随时更改COM口的端口号及参数是多么好用呀.可是SPCOMM做不到,不知现在有没有更高级的SPCOMM,哪位大虾提供一下.谢了.
来自: butcool, 时间: 2005-08-09 0:51:45, ID: 3160518
用COMBOBOX做个选择串口的东西,内容为"COM1""COM2""COM3"......
form1.comm1.PortName:='//./'+form1.ComboBox1.Text;
if not comm1.connect then begin
..............................
此处就可以设置其它参数了比如
comm1.BaudRateValue:=19200;其他参数的修改最好看明白该控件的属性
end;
这样就可以知道是否使用了该串口,并能重新设置该串口
来自: chenybin, 时间: 2005-08-09 9:48:31, ID: 3160726
Spcomm的StartComm方法里面抛出了几个异常,其中有一个就是串口占用的,你可以把StartComm修改成一个函数,返回Integer,判断就可以了
来自: wei0916, 时间: 2005-08-10 10:06:13, ID: 3161953
修改函数后要在错误捕获里捕获SPCOMM的异常,再跟据异常看串口是否打开对吗
来自: 大痴, 时间: 2005-08-23 21:48:31, ID: 3177731
你可以先comm1.stopcomm再comm1.startcomm了,打开之前先关闭就好了。
来自: h6003113, 时间: 2005-08-23 22:17:12, ID: 3177775
try
except
再打开串口一次,就可以了!!
来自: chenybin, 时间: 2005-08-23 22:26:17, ID: 3177781
其实不修改也可以,系统自己会抛出异常的,修改起来也不麻烦阿
来自: AsleepAnge, 时间: 2005-08-25 10:25:17, ID: 3179642
直接用START就可以了,办法虽然笨蛋,但只要知道准确的端口数,然后用TRY COMM1.start 打开后的操作,except 打不开的错误提示。。。
来自: wei0916, 时间: 2005-09-03 9:03:12, ID: 3190153
多人接受答案了。
得分大富翁: AsleepAnge-2,butcool-2,chenybin-2,h6003113-2,maxim88-2,大痴-2,唐佐平-3,