感受:

写监听程序的感受:原来有些事情并不是想象的那么难,难和简单就只在一个点上,一个点突破了,后面就豁然开朗了。所以有些问题,不能死闷,要先思考,然后查资料,然后问有经验的人。

最近写一个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端口监听程序相关推荐

  1. 获取运行端口监听的用户身份auth-owner

    获取运行端口监听的用户身份auth-owner Windows系统提供工作在TCP 113端口的授权服务(Authentication Service),用来判断TCP连接的用户.Nmap的auth- ...

  2. Linux查看端口监听情况,以及Linux查看某个端口对应的进程号和程序

    文章目录: 1 linux查看那端口监听情况 2 Linux查看某个端口对应的进程号和程序 1 linux查看那端口监听情况 linux中可以使用netstat命令查看端口监听情况,首先来看一下该命令 ...

  3. TCP 端口监听队列原理

    近期需要实现一个TCP线程池服务,该服务需要能够在同一个端口上实现 TCP 常规服务.HTTP请求服务.SOAP WebService 服务,为了测试 ACE 的线程池启动后,如果所有线程都在忙,客户 ...

  4. php 监听端口数据客户端ip_PHP做端口监听示例代码

    1,PHP端口监听之服务器端 复制代码 代码示例: // Server // 设置错误处理 error_reporting(E_ALL); // 设置运行时间 set_time_limit(0); / ...

  5. linux套接字端口,多端口监听套接字linux(multiport listening socket linux)

    多端口监听套接字linux(multiport listening socket linux) 我正在用C(linux)编写一个多线程服务器应用程序,它必须监听2个不同的端口号,例如监听端口号3000 ...

  6. linux修改端口监听地址,修改nginx/Tomcat等Web服务的端口监听地址

    我们将一起来学习如何在Linux实例中修改nginx.Tomcat等常见Web服务的端口监听地址. 前提条件 你已经在Linux实例上安装了Web服务器.你可以参考以下文档安装并启动相应的服务: 你已 ...

  7. Linux的ipv6不监听端口,netstat查看服务端口监听在ipv6但是通过ipv4地址可正常访问...

    在Linux系统中,会发现一个有趣的现象,通过 netstat 查看监听的服务端口时,发现有些服务 Proto(protocol协议) 项只显示了 tcp6(代表监听服务端口在IPv6协议), 没有 ...

  8. 解决服务器80端口监听异常导致无法打开和访问网站的问题

    转载:原文章地址:解决服务器80端口监听异常导致无法打开和访问网站的问题 - 爱码网 如果遇到IIS服务器的网站无法访问,并在IE/EDGE浏览器中显示无法显示此页的问题,一般情况下是有多种可能因素, ...

  9. Windows/Linux 开启端口监听

    本文开头附:Flink 学习路线系列 ^ _ ^ 1.Windows 开启端口监听 Windows本身是不支持 nc 端口监听的.但是我们可以通过下载 netcat 来是解决这个问题.下载地址:net ...

最新文章

  1. 转 --有些事情需要注意
  2. 什么是一致性 Hash 算法
  3. Homebrew 1.9发布,将支持Linux与Windows 10
  4. 副业,程序猿的第二职业,聊聊我是怎么做的
  5. python 复制、移动文件到指定目录并修改名字
  6. php 调用系统命令 执行外部程序
  7. 【Python基础入门系列】第09天:Python tuple
  8. php组成,PHP的控制结构,PHP脚本是由一系列语句组成的。
  9. html5中figure怎么用,figure 和 figcaption 元素的正确使用方式
  10. 谷歌宕机,只有运维背锅吗?
  11. excel 第六次人口普查_计算机二级考试真题-Excel-第六次人口普查数据的统计分析...
  12. Redies tutorial
  13. python读取grd数据_Matlab读取grd格式的文件
  14. 找出m到n水仙花数c语言程序设计,《C语言课程设计输出水仙花数》.doc
  15. Hive -- Hive面试题及答案(3)
  16. 【领导力】同理心:CIO 的力量倍增器
  17. php 井字棋,Unity3D 井字棋
  18. 众里寻他千百度-百度发展的秘密
  19. 2020年高教社杯全国大学生数学建模竞赛赛题 B题分析与思路!(持续更新)
  20. 数据恢复之D-Recovery

热门文章

  1. Intellij IDEA 将工程转换成maven工程 详解
  2. ZeroMQ实例-使用ZeroMQ进行windows与linux之间的通信
  3. Oracle简单脚本演示样例
  4. Effective Java - Item 1: Consider static factory methods instead of constructors
  5. ZOJ1002 Fire Net(非递归版)
  6. redhat enterprise linux 下配置本地yum源
  7. c++中的基本知识点
  8. 编译安装apr 1.5.2 时报 rm: cannot remove `libtoolT': No such file or directory
  9. 职责链模式里面必须要知道的事情
  10. jquery中输入验证中一个不错的效果