我想判断串口是增加,还是移除,若串口数相等没有发生变化,它打开的是新的串口还是原来的串口,如果是原来的串口就打开该串口,在串口添加和移除的情下能自动打开原来的串口。这个该怎么实现,要不要使用遍历的方法?
解决方案 »
- 【高手请进】----如何判断一个图存在于另一个图中,有没示例代码?
- Delphi数据库?查询??
- ADOQuery lookup多列怎么设置??
- 模糊查询的问题
- delphi 高手帮忙!如何取得库里存储的图片?
- DELPHI 调用VC++ 编写的DLL 参数回传值的问题!请帮忙!!
- 图片占用内存问题(急)
- dll中的窗口如何以子窗口显示在调用的窗口里
- 为什么有的字符串函数可以用,有的就不可以用呢?
- Midas结构问题!!!!!
- 急!!delphi调用c++的dll失败,但是pb和vb.net都可以,大家帮我看看
- [Fatal Error] f_dzbl.pas(11): File not found: 'PluginBaseFormD.dcu'
procedure Tfrm_Main.CheckCommTimeTimer(Sender: TObject);
var
oldCbb_items,curCbb_items:TStrings;
begin
oldCbb_items:=cbb_port.Items; //comm中原来的值
cbb_port.Items.Clear;
SearchComToCBB(cbb_port); //查找系统中可用的串口至cbb_port
curCbb_items:=cbb_port.Items; //comm重读注册表后的值
if oldCbb_items.Count > curCbb_items.Count then
begin
SetStatus('设备移除成功',False);
end
else if oldCbb_items.Count < curCbb_items.Count then
begin
SetStatus('设备插入成功',False);
OpenComm(cbb_port); //打开串口
end
else if oldCbb_items.Count = curCbb_items.Count then
begin
if oldCbb_items <> curCbb_items then //!!这里肯定是错的,我不会判断这两个里面的Items是否相等
begin
SetStatus('原设备移除,新设备插入成功',False);
end;
end else
begin
SetStatus('设备重新插入成功',False);
OpenComm(cbb_port); //!!让它打开上一次的打开的那个串口,该怎么实现?
end;//!!还有一点,我想让它自动检测。
procedure Tfrm_Main.CheckCommTimeTimer(Sender: TObject);
var
oldCbb_items,curCbb_items:TStrings; //oldCbb_items是原来从注册表读取到comm的值,curCbb_items是当前值
begin
oldCbb_items:=cbb_port.Items; //comm中原来的值
cbb_port.Items.Clear;
SearchComToCBB(cbb_port); //查找系统中可用的串口至cbb_port
curCbb_items:=cbb_port.Items; //comm重读注册表后的值
if oldCbb_items.Count > curCbb_items.Count then
begin
SetStatus('设备移除成功',False);
end
else if oldCbb_items.Count < curCbb_items.Count then
begin
SetStatus('设备插入成功',False);
OpenComm(cbb_port); //打开串口
end
else if oldCbb_items.Count = curCbb_items.Count then
begin
if oldCbb_items <> curCbb_items then //!!这里肯定是错的,我不会判断这两个里面的Items是否相等
begin
SetStatus('原设备移除,新设备插入成功',False);
end else
begin
SetStatus('设备重新插入成功',False);
OpenComm(cbb_port); //!!让它打开上一次的打开的那个串口,该怎么实现?
end;
end;//!!还有一点,我想让它自动检测。