java读取串口数据_js之powershell与串口

上回写了js通过ActiveX控件执行powershell .ps1文件,这次让我们来看看powershell如何实现串口。

微软的文档说powershell是建立在.NetFramework框架上的,老规矩我们就可以调用它的API,然而我只有js的基础,又如何了解C#的语法呢?这些都不是你要关心的问题!网上说C#是为了抗衡JAVA所出的,所以动Java应该就懂C#。

说实话我真很不适应C#的事件委托,这也闹心了题主很久,完全跟js的事件不一样。实际在powershell中完全不用事件委托,而是采用和js一样的订阅模式(事件绑定,监听事件,回调函数)。

powershell既然是建立在.NetFramework框架上的那么它是基于类(class)的,而js是基于构造函数的,这是两者的不同,在js中我们通过new实例化一个对象,而powershell中通过new-object来实例化一个对象,当然实例化wmi对象有轻微的区别!

今天重点的要说2个命令和1个类:

1、get-event /*获取事件*/

register-objectevent /*注册事件对象*/

-inputobject

-eventname

-action

2、system.Io.Ports.serialPort /*串口类*/

打开powershell的帮助文档我们可以看到 register-objectevent的原型是下面这样子的

499e8f318663847d5e181886b7e4615c.png

我们看到有很多参数,但是实际需要用到的只有上面三个,我们先来看个官方文档的例子

5f1fe86cb5c98d7bc2254d5c81dfacd7.png

感觉有点太复杂,简化一下

8e70c7d834665f7d1824c36ae366030a.png

这个例子有点像js里面的setinterval(定时器),首先通过new-object实例化了一个对象,设置了两个属性的值,分别为间隔时间,打开定时器,然后注册了一个事件对象,监听elapsed事件,会触发action里面的command,也就是把1+1的值输出到屏幕上。

那么我们现在把上面的代码替换成下面的

40d7ac69e5f96fe7c385bfff6c534de8.png

同样的使用实例化了一个对象,只是这次的类有点不一样了,可以看到serialport就是上面说的那个串口类,它有很多属性和方法,当然还包括了一个事件

datareceived,这里属性值的设置我们只通过参数设置了com口为com3,波特率,检验位,数据位,停止位均采用了默认值,如下是官方文档的截图

4a8531d7bc7521dd0eb51d99f7a83d2a.png

与之前案例不同的是这里还调用了两方法,open()打开串口

readexisring()读取数据,到此为止我们完成了代码部分的工作。

下面是在一台电脑上实验需要准备的两个小软件

1.串口调试精灵

2.virtual serial port

这里我们用virtual serial port实现了com4发,com3收,虽然也有把com口短接的,很显然对于我来说这种方式跟方便!

8457045b338445741f88495bdf769598.png

952f7ee9fbd01a9943b3a18584af61c5.png

那么就可以用串口调试精灵从com4发送数据,而使用powershell写代码从com3读取数据并显示到控制台了。

还有串口类和注册事件对象不明白的地方可以去微软官网看看原型呦!

最后的彩蛋

如果使用了-action参数,事件是不会添加到事件队列的呦,也就是使用get-event无法获取到事件对象!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值