如何制作脚踏开关 (四个按钮)
2008-04-28 10:15
405 查看
利用RS232的DTR(4脚,输出)、DSR(6脚,输入)和CTS(8脚,输入)
注:这里还可以用RTS(7脚)来代替DTR,而作为输入的还可以用DCD(1脚,输入)和Ring(9脚,输入)
下面的例子运行后,用一导线短接4脚和1脚、4脚和6脚、4脚和8脚、4脚和9脚。
VB脚本:
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
Option Explicit
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
Private Sub Form_Load()
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
MSComm1.PortOpen = True
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
MSComm1.DTREnable = True
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
End Sub
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
Private Sub MSComm1_OnComm()
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
Select Case MSComm1.CommEvent
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
Case comEvCD ' Change in the CD line.
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
Debug.Print "CD"
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
Case comEvCTS ' Change in the CTS line.
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
Debug.Print "CTS"
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
Case comEvDSR ' Change in the DSR line.
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
Debug.Print "DSR"
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
Case comEvRing ' Change in the Ring Indicator.
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
Debug.Print "Ring"
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
End Select
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
End Sub
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
C++脚本:(用的victor 控件)
AnsiString __fastcall Victor_CommDevice::CommDeviceCommNotify(int SBtn, bool Test)
{
//动态结构体赋值
stcom->CTS = CurCommDevice->CTS;
stcom->DCD = CurCommDevice->DCD;
stcom->DSR = CurCommDevice->DSR;
stcom->Ring = CurCommDevice->Ring;
if ((stcom->CTS || stcom->DCD || stcom->DSR || stcom->Ring) && !down)
{ //每次按下只处理一次事件
down = true;
try
{
if (SBtn == 1)
{
ComFlag = "CTS+DCD+DSR+RLSD";
Process();
}
else if (SBtn > 1)
{
if (stcom->CTS)
{
ComFlag = "CTS";
CTS_Process();
}
if (stcom->DCD)
{
ComFlag = "DCD";
DCD_Process();
}
if (stcom->DSR)
{
ComFlag = "DSR";
DSR_Process();
}
if (stcom->Ring)
{
ComFlag = "Ring";
RLSD_Process();
}
if(Test)
{
return ComFlag;
}
}
}
catch (Exception& e)
{
PMSGDLG->ShowErrorMsg("无法指定的重载函数! 错误原因: " + e.Message);
if(Test)
{
return "";
}
Abort();
}
}
else if (!stcom->CTS && !stcom->DCD && !stcom->DSR && !stcom->Ring)
{ //弹开或者其它自动还原数据
down = false;
if(Test)
{
return "";
}
}
}
注:这里还可以用RTS(7脚)来代替DTR,而作为输入的还可以用DCD(1脚,输入)和Ring(9脚,输入)
下面的例子运行后,用一导线短接4脚和1脚、4脚和6脚、4脚和8脚、4脚和9脚。
VB脚本:
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
Option Explicit
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
Private Sub Form_Load()
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
MSComm1.PortOpen = True
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
MSComm1.DTREnable = True
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
End Sub
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
Private Sub MSComm1_OnComm()
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
Select Case MSComm1.CommEvent
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
Case comEvCD ' Change in the CD line.
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
Debug.Print "CD"
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
Case comEvCTS ' Change in the CTS line.
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
Debug.Print "CTS"
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
Case comEvDSR ' Change in the DSR line.
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
Debug.Print "DSR"
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
Case comEvRing ' Change in the Ring Indicator.
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
Debug.Print "Ring"
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
End Select
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
End Sub
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
C++脚本:(用的victor 控件)
AnsiString __fastcall Victor_CommDevice::CommDeviceCommNotify(int SBtn, bool Test)
{
//动态结构体赋值
stcom->CTS = CurCommDevice->CTS;
stcom->DCD = CurCommDevice->DCD;
stcom->DSR = CurCommDevice->DSR;
stcom->Ring = CurCommDevice->Ring;
if ((stcom->CTS || stcom->DCD || stcom->DSR || stcom->Ring) && !down)
{ //每次按下只处理一次事件
down = true;
try
{
if (SBtn == 1)
{
ComFlag = "CTS+DCD+DSR+RLSD";
Process();
}
else if (SBtn > 1)
{
if (stcom->CTS)
{
ComFlag = "CTS";
CTS_Process();
}
if (stcom->DCD)
{
ComFlag = "DCD";
DCD_Process();
}
if (stcom->DSR)
{
ComFlag = "DSR";
DSR_Process();
}
if (stcom->Ring)
{
ComFlag = "Ring";
RLSD_Process();
}
if(Test)
{
return ComFlag;
}
}
}
catch (Exception& e)
{
PMSGDLG->ShowErrorMsg("无法指定的重载函数! 错误原因: " + e.Message);
if(Test)
{
return "";
}
Abort();
}
}
else if (!stcom->CTS && !stcom->DCD && !stcom->DSR && !stcom->Ring)
{ //弹开或者其它自动还原数据
down = false;
if(Test)
{
return "";
}
}
}
相关文章推荐
- MFC中如何去掉CPropertySheet界面下方的四个按钮?
- 5. 在cocos2d里面如何制作按钮:简单按钮、单选按钮和开关按钮
- 报表中如何制作“删除当前行”的按钮
- 如何在PB中制作特殊形状数据窗口或按钮
- 在几何画板中如何制作滚动按钮
- 如何制作一个总是位于屏幕底部的按钮
- 在MFC中从中如何制作图形按钮 .
- pb按钮:如何在PB中制作特殊形状数据窗口或按钮
- 在MFC中从中如何制作图形按钮
- 如何用css制作有趣的按钮(最新译文)
- (译)在cocos2d里面如何制作按钮:简单按钮、单选按钮和开关按钮
- Unity3d如何制作声音开关按钮
- flash中如何制作播放和暂停按钮(as3.0)
- 在photoshop中如何制作一个简洁干净的按钮
- 在cocos2d里面如何制作按钮:简单按钮、单选按钮和开关按钮
- 在COCOS2D-X里如何制作各种按钮
- 教你如何用PS制作多款按钮UI设计教程
- web网页按钮如何制作
- 如何制作渐变的按钮
- 如何制作flash的关闭按钮