C#版及nodejs版的com端口监听程序
感受:
写监听程序的感受:原来有些事情并不是想象的那么难,难和简单就只在一个点上,一个点突破了,后面就豁然开朗了。所以有些问题,不能死闷,要先思考,然后查资料,然后问有经验的人。
最近写一个com端口监听程序,去读卡id,然后做相应的动作,写了两个版本的,一个是nodejs版本的,一个是C#版本的,两种语言都没有用过,通过一个上午的现学现卖,写出了一个初稿。程序写好了,发现只能读取部分卡的数据,并且读取的数据不是自己想要的,后来找了厂商的人,原来他们的波特率和我设置的不同,导致数据读取不同。这种问题果然要提前要一下各种硬件厂商的说明书,了解了他们的通信协议才能方便编程。
下面给出nodejs版和c#版的com端口监听程序。
node版:
var SerialPort = require("serialport").SerialPort; //引入模块
var SlowBuffer = require('buffer').SlowBuffer;
var portName = 'COM3'; //定义串口名
var serialPort = new SerialPort("COM3", {baudRate: 115200, //波特率dataBits: 8, //数据位parity: 'none', //奇偶校验stopBits: 1, //停止位flowControl: false
}, false);
serialPort.open(function(error){ if(error){ console.log("打开端口"+portName+"错误:"+error);}else{ console.log("打开端口成功,正在监听数据中");serialPort.on('data',function(data){console.log(data);console.log(data.length);console.log(data[0]);console.log(Buffer.isBuffer(data));});serialPort.write("ls\n",function(err,results){console.log('err:'+err);console.log('results:'+results);});}
});
C#版
using System; //using 关键字的作用是导入命名空间
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.IO.Ports;namespace MyFirstApp // namespace 命名空间
{public class SerialTest{//串口对象private SerialPort _Comm = null;//串口控件初始化public void Init(){_Comm = new SerialPort("COM3");//串口参数设定_Comm.BaudRate = 115200;_Comm.Parity = Parity.None; //Parity为C#预定义枚举型变量_Comm.DataBits = 8;_Comm.StopBits = StopBits.One; //StopBits为C#预定义的枚举量_Comm.Handshake = Handshake.None;_Comm.RtsEnable = true;_Comm.ReadBufferSize = 1024;_Comm.WriteBufferSize = 512;_Comm.DtrEnable = true;//为控件添加事件处理函数 _Comm.DataReceived +=new SerialDataReceivedEventHandler(CommDataReceived);_Comm.ReceivedBytesThreshold = 1;_Comm.Open();Console.WriteLine("Press any key to continue...");Console.WriteLine();Console.ReadKey();}//串口数据处理函数public void CommDataReceived(Object sender, SerialDataReceivedEventArgs e){//Comm.BytesToRead中为要读入的字节长度int len = _Comm.BytesToRead;Console.WriteLine("len:"+len);Byte[] readBuffer = new Byte[len];_Comm.Read(readBuffer, 0, len); //将数据读入缓存//处理readBuffer中的数据foreach (Byte b in readBuffer){Console.WriteLine("读到数据:"+b);}}public void Stop(){_Comm.Close();}static void Main(string[] args) // Main方法,程序入口 {SerialTest test = new SerialTest();test.Init();} }}
注意,一定注意参数的设置,有时候读取不到数据,很可能是参数设置的问题,比如BaudRate(波特率)最开始我设置为9600,死活读不到数据。后来联系厂商,那边通信是115200波特率,这才解决。
C#版及nodejs版的com端口监听程序相关推荐
- 获取运行端口监听的用户身份auth-owner
获取运行端口监听的用户身份auth-owner Windows系统提供工作在TCP 113端口的授权服务(Authentication Service),用来判断TCP连接的用户.Nmap的auth- ...
- Linux查看端口监听情况,以及Linux查看某个端口对应的进程号和程序
文章目录: 1 linux查看那端口监听情况 2 Linux查看某个端口对应的进程号和程序 1 linux查看那端口监听情况 linux中可以使用netstat命令查看端口监听情况,首先来看一下该命令 ...
- TCP 端口监听队列原理
近期需要实现一个TCP线程池服务,该服务需要能够在同一个端口上实现 TCP 常规服务.HTTP请求服务.SOAP WebService 服务,为了测试 ACE 的线程池启动后,如果所有线程都在忙,客户 ...
- php 监听端口数据客户端ip_PHP做端口监听示例代码
1,PHP端口监听之服务器端 复制代码 代码示例: // Server // 设置错误处理 error_reporting(E_ALL); // 设置运行时间 set_time_limit(0); / ...
- linux套接字端口,多端口监听套接字linux(multiport listening socket linux)
多端口监听套接字linux(multiport listening socket linux) 我正在用C(linux)编写一个多线程服务器应用程序,它必须监听2个不同的端口号,例如监听端口号3000 ...
- linux修改端口监听地址,修改nginx/Tomcat等Web服务的端口监听地址
我们将一起来学习如何在Linux实例中修改nginx.Tomcat等常见Web服务的端口监听地址. 前提条件 你已经在Linux实例上安装了Web服务器.你可以参考以下文档安装并启动相应的服务: 你已 ...
- Linux的ipv6不监听端口,netstat查看服务端口监听在ipv6但是通过ipv4地址可正常访问...
在Linux系统中,会发现一个有趣的现象,通过 netstat 查看监听的服务端口时,发现有些服务 Proto(protocol协议) 项只显示了 tcp6(代表监听服务端口在IPv6协议), 没有 ...
- 解决服务器80端口监听异常导致无法打开和访问网站的问题
转载:原文章地址:解决服务器80端口监听异常导致无法打开和访问网站的问题 - 爱码网 如果遇到IIS服务器的网站无法访问,并在IE/EDGE浏览器中显示无法显示此页的问题,一般情况下是有多种可能因素, ...
- Windows/Linux 开启端口监听
本文开头附:Flink 学习路线系列 ^ _ ^ 1.Windows 开启端口监听 Windows本身是不支持 nc 端口监听的.但是我们可以通过下载 netcat 来是解决这个问题.下载地址:net ...
最新文章
- 转 --有些事情需要注意
- 什么是一致性 Hash 算法
- Homebrew 1.9发布,将支持Linux与Windows 10
- 副业,程序猿的第二职业,聊聊我是怎么做的
- python 复制、移动文件到指定目录并修改名字
- php 调用系统命令 执行外部程序
- 【Python基础入门系列】第09天:Python tuple
- php组成,PHP的控制结构,PHP脚本是由一系列语句组成的。
- html5中figure怎么用,figure 和 figcaption 元素的正确使用方式
- 谷歌宕机,只有运维背锅吗?
- excel 第六次人口普查_计算机二级考试真题-Excel-第六次人口普查数据的统计分析...
- Redies tutorial
- python读取grd数据_Matlab读取grd格式的文件
- 找出m到n水仙花数c语言程序设计,《C语言课程设计输出水仙花数》.doc
- Hive -- Hive面试题及答案(3)
- 【领导力】同理心:CIO 的力量倍增器
- php 井字棋,Unity3D 井字棋
- 众里寻他千百度-百度发展的秘密
- 2020年高教社杯全国大学生数学建模竞赛赛题 B题分析与思路!(持续更新)
- 数据恢复之D-Recovery
热门文章
- Intellij IDEA 将工程转换成maven工程 详解
- ZeroMQ实例-使用ZeroMQ进行windows与linux之间的通信
- Oracle简单脚本演示样例
- Effective Java - Item 1: Consider static factory methods instead of constructors
- ZOJ1002 Fire Net(非递归版)
- redhat enterprise linux 下配置本地yum源
- c++中的基本知识点
- 编译安装apr 1.5.2 时报 rm: cannot remove `libtoolT': No such file or directory
- 职责链模式里面必须要知道的事情
- jquery中输入验证中一个不错的效果