您的位置:首页 > 其它

另类,用串口实现普通电脑的开关量输入

2014-03-06 15:00 155 查看
普通电脑没有通用的输入输出口(GPIO),但有时候我就想输入一个开关量。

比如让用户拉一下拉绳开关就启动某个应用,比如装一个触点开关判断门是打开的还是关闭的,比如....

需求是如此简单,你都不愿意花几十块钱去买一个单片机,更不用说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

怎么样,是不是很简单。一起来动手做一个吧~~~
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐