开关的样子和普通手按开关差不多,开关和计算机的COM口相连。实现的目的是脚踏或手按一下开关后,计算机能捕捉到信号,然后执行相应的操作。
有一个软件的使用说明中是这样描述的:7、脚踏开关的连接:串口(9孔D形头)的4,6,8三脚,其中脚4连接脚踏开关的公共脚(COM脚),脚6连常用脚(NO),脚8连常闭脚(NC)。(软件默认串口为COM1,系统会自动识别)。视频可以用s-video,s-video电缆或插头面对自己,定位柱朝上,四个针的编号是:从左到右,从上到下,依次是1,2,3,4,分别对应航空插座的1,2,3,4。为了系统的安全性,请使用工作站自带的脚踏开关。大家谁做过这样的软件,原理是怎样的?信号是如何捕捉的?有没有demo程序可以参考一下?谢谢!

解决方案 »

  1.   

    感谢gzmhero兄,有没有读串口的寄存器状态这方面的资料。
    [email protected]
      

  2.   

    好象用MSComm.ocx控件可以做的,找找这方面的资料应该有的
      

  3.   

    谢谢关注。我原来就是做串口GPS编程的。但我试了一下,mscomm或TComm等好像无法捕捉到脚踏开关的信号。
    我在网上找了这样一篇文章,是这样说的:
    1。串口是用来作串行通讯的,它不能直接检测开关状态。可以考虑作一个下位机系统(单片机系统),先由下位机检测开关的检测,再通过微机与下位之间的通讯,将下位机采集到的开关状态上传给微机。在此之前要做一个通讯协议,约定两方通讯时,各组数据表示的意思。
    2。第二个问题是不是你没表达清楚。
    3。微机串口可以接一个485通讯模块,而下位机系统也必须有是一个485通讯芯片。
    还不是很明白
      

  4.   

    应该可以通过API来读串口的寄存器状态的,应该就是一些流控的状态(不确定,只是认为)。在古老Dos下面的时候,做过,直接读写内存地址就能够实现。
      

  5.   

    沒有型號, 可查下??估計中間還有電路轉換, 直接 的4,6,8三脚 直連到電腦 comPort覺得不大可能
      

  6.   

    >>其中脚4连接脚踏开关的公共脚(COM脚),脚6连常用脚(NO),脚8连常闭脚(NC)。
    按你的描述应该是一个双向开关,PC可以通过LPT口来读接通状态,不过最好的方式是买个I/O卡来检测开关状态。
      

  7.   

    呵呵,这个我会,发个短消息留个email给我吧
      

  8.   

    利用RS232的DTR(4脚,输出)、DSR(6脚,输入)和CTS(8脚,输入),很容易实现楼主的要求:注:这里还可以用RTS(7脚)来代替DTR,而作为输入的还可以用DCD(1脚,输入)和Ring(9脚,输入)下面的例子运行后,你试着用一导线短接4脚和1脚、4脚和6脚、4脚和8脚、4脚和9脚。Option ExplicitPrivate Sub Form_Load()
        MSComm1.PortOpen = True
        MSComm1.DTREnable = True
    End SubPrivate 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
      

  9.   

    谢谢 jadeluo(秀峰),不用不好意:),看得懂
      

  10.   

    看看标准C是怎么操作串口的,它就是直接通过访问I/O地址,再不行就用汇编试试
      

  11.   

    楼上的同志,操作串口在windows当中和操作任何外设是一样的,都是要通过驱动程序的。驱动程序有统一的API入口,就是CreateFile系列操作文件的API,Windows中把外部设备都看成是文件。RS232 25根脚大多数不怎么用,一般只用3-9根线,最少的是用3根线,2、3、7号线,2发送数据线 3接收数据线,7号线地线。但是,Rs232接口中很多线是很有用的,一些线是控制信号线,所以可以作为开关信号使用,文中所说4号线是请求发送信号线,6号线是数据设备准备好,8号线是载波检测信号线。这些信号只有在特定的设备中才有含义,也就是在你自己的设备中你愿意怎么解释这些信号都行。多说就不说了,提供几个API函数参考,你自己你看帮助
    CreateFile,打开Com口的名字是这样的:COM2或者COM1或者.....
    GetOverlappedResult
    SetCommMask
    WaitCommEvent
    另外附上2年前的作品:一个项目中需要和串口通讯,我写了DLL支持串口异步通讯,并且用循环冗余校验,其中一些代码是侦查串口信号线状态改变的。
    http://www.mszs.com/book/Connections/_notes/_Context/pro.rar
    此外Delphi中有个很著名的Com口组件的原代码附上,这个作为参考更加清晰
    http://www.mszs.com/book/Connections/_notes/_Context/SPCOMM.PAS祝你早日成功