如何制作脚踏开关 (四个按钮)

利用RS232的DTR(4脚,输出)、DSR(6脚,输入)和CTS(8脚,输入)   
    
  注:这里还可以用RTS(7脚)来代替DTR,而作为输入的还可以用DCD(1脚,输入)和Ring(9脚,输入)  
   
  下面的例子运行后,用一导线短接4脚和1脚、4脚和6脚、4脚和8脚、4脚和9脚。   
   VB脚本:

   Option     Explicit    
    
  
Private     Sub    Form_Load()   
          MSComm1.PortOpen   
=     True    
          MSComm1.DTREnable   
=     True    
  
End     Sub    
    
  
Private     Sub    MSComm1_OnComm()   
        
Select     Case    MSComm1.CommEvent   
              
Case    comEvCD        '    Change   in   the   CD   line.   
                  Debug.Print    " CD "    
              
Case    comEvCTS        '    Change   in   the   CTS   line.   
                  Debug.Print    " CTS "    
              
Case    comEvDSR        '    Change   in   the   DSR   line.   
                  Debug.Print    " DSR "    
              
Case    comEvRing        '    Change   in   the   Ring   Indicator.   
                  Debug.Print    " Ring "    
        
End     Select    
  
End     Sub    

 

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   "" ;
        }
    }
}
  • 0
    点赞
  • 2
    收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:大白 设计师:CSDN官方博客 返回首页
评论

打赏作者

52vc

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值