另类,用串口实现普通电脑的开关量输入
2014-03-06 15:00
155 查看
普通电脑没有通用的输入输出口(GPIO),但有时候我就想输入一个开关量。
比如让用户拉一下拉绳开关就启动某个应用,比如装一个触点开关判断门是打开的还是关闭的,比如....
需求是如此简单,你都不愿意花几十块钱去买一个单片机,更不用说PCI扩展卡、PLC之类的了。。怎么办呐?
有办法!最简单的用串口就能实现。
原理:
串口的pin4[DTR]和pin7[RTS] 可以输出+6V的电(好吧,你的电脑上不一定是+6V,但肯定大于+3V就可以了),将该输出分别接入到pin1[DCD]、pin6[DSR]、pin8[CTS],在PC上就能检测出来,从而实现开关量输入。
核心代码:
知道原理,剩下的就好办了。
首先是接线:(你需要一个9针串口母头、若干个开关、导线、电烙铁)
View Code
怎么样,是不是很简单。一起来动手做一个吧~~~
比如让用户拉一下拉绳开关就启动某个应用,比如装一个触点开关判断门是打开的还是关闭的,比如....
需求是如此简单,你都不愿意花几十块钱去买一个单片机,更不用说PCI扩展卡、PLC之类的了。。怎么办呐?
有办法!最简单的用串口就能实现。
原理:
串口的pin4[DTR]和pin7[RTS] 可以输出+6V的电(好吧,你的电脑上不一定是+6V,但肯定大于+3V就可以了),将该输出分别接入到pin1[DCD]、pin6[DSR]、pin8[CTS],在PC上就能检测出来,从而实现开关量输入。
核心代码:
//往PIN口输出电压 SerialPort.DtrEnable = true; SerialPort.RtsEnable = true; //判断PIN是否有电压输入 bool cd = SerialPort.CDHolding; bool dsr = SerialPort.DsrHolding; bool cts = SerialPort.CtsHolding;
知道原理,剩下的就好办了。
首先是接线:(你需要一个9针串口母头、若干个开关、导线、电烙铁)
class Program { static void Main(string[] args) { const string PORT_NAME = "COM6";//设置成你自己的端口 SerialPortSwitch portSwitch = new SerialPortSwitch(PORT_NAME); portSwitch.SwitchOn += pin => { Console.WriteLine(pin + "\tOn"); }; portSwitch.SwitchOff += pin => { Console.WriteLine(pin + "\tOff"); }; portSwitch.Start(); Console.WriteLine("串口输入运行中,按任意键结束..."); Console.ReadKey(); portSwitch.Stop(); } }
View Code
怎么样,是不是很简单。一起来动手做一个吧~~~
相关文章推荐
- 树莓派通过ch340串口实现与电脑端通信
- PL2303芯片实现串口转usb,但是要在电脑上装上芯片的驱动
- 安卓实现电脑端的QQ登录界面 自动提示+点击按钮提示输入记录
- 用蓝牙串口模块,实现和笔记本电脑自带蓝牙的数据收发测试
- Android实现仿电脑的ip地址输入
- Linux在脚本中实现普通用户到root用户的切换(包括脚本输入密码)
- 例化的方法实现多路开关量输入
- 在普通视图窗口中实现键盘字符的输入
- 2014 0416 word清楚项目黑点 输入矩阵 普通继承和虚继承 函数指针实现多态 强弱类型语言
- Mouse without Borders是微软的一个软件实验项目,这款软件可让鼠标自由在局域网中的多台电脑间移动,键盘输入实现无缝切换,还可以直接用鼠标相互拖拽文件。 如果经常需要同时使用两台以
- 02在普通视图窗口中实现键盘字符的输入
- 一根普通网线实现两台电脑互传文件
- 键盘输入3*3的整数矩阵,求两条对角线中最小的元素和最大的元素,使用普通指针变量实现。
- 键盘输入3*3的整数矩阵,求两条对角线中最小的元素和最大的元素,使用普通指针变量实现。
- 键盘输入3*3的整数矩阵,求两条对角线中最小的元素和最大的元素,使用普通指针变量实现。
- FloatLabeledEditText实现另类输入框
- 键盘输入3*3的整数矩阵,求两条对角线中最小的元素和最大的元素,使用普通指针变量实现。
- C语言通过串口实现两台电脑通信
- 键盘输入3*3的整数矩阵,求两条对角线中最小的元素和最大的元素,使用普通指针变量实现。
- 键盘输入3*3的整数矩阵,求两条对角线中最小的元素和最大的元素,使用普通指针变量实现。