串口0-com0

描述


串口0,异步全双工串口对象,可实现串口数据的接收和发送,父对象为device,无子对象。

通讯协议:支持脚本模式(ScriptMode)协议和用户自定义(UserDefine)协议,在运行时只能选择其中一种。两种协议的比较见下表

ScriptMode协议

UserDefine协议

 

可选择以下两种方式中的一种或两种混合使用:

- 自动发送:在设计APP时,选中某个控件的属性中的”事件通知”(verbose),APP在运行过程中,当对象事件(该事件需在动作列表中选中)产生时,ExpOS自动发送事件消息,无需用户编写任何脚本;如:页面main中名字为xx的按钮按下一次,ExpOS自动向串口发送"ui.main.xx.onPress()"字符串;

-主动发送:不选择“事件通知”属性,与自定义协议发送方式一致

在任意脚本中直接调用device.com0.write()或者device.com0.writeString()函数,实现主动发送任意自定义数据或者字符串。用户需编写发送处理程序。

外部控制单元发送有效的JavaScript脚本程序字符串,ExpOS接收后自动执行。如:外部控制单元向串口发送”ui.main.xx.text=‘test’“字符串(后必须加回车字符),页面main中名字为xxx的控件文本内容自动刷新为“test”。任何有效的脚本程序都能通过通讯接口以字符串方式发送给ExpOS立即执行。用户无需编写接收处理程序

在device->com0的onReceive(count)事件动作脚本里调用device.com0.read()函数读取有效串口数据。ExpOS根据设置好的阀值、帧头和帧尾等属性,自动接收串口数据放入缓冲区并按指定条件触发onReceive(count)动作脚本执行,完成数据读取。用户需编写接收处理程序。

事件


onReceive: 接收到串口数据时触发(只对UserDefine协议有效,ScriptMode协议不会产生该事件),事件函数定义:onReceive(count), count为串口接收缓冲区内的未读出数据字节数。

onSend:发送完一次(调用write()或者writeString()一次)串口数据时触发,事件函数定义:onSend(count), count为串口已发送数据的字节数。

属性


名称功能说明脚本例子
protocol通讯协议:脚本模式(ScriptMode)协议和用户自定义(UserDefine)协议可选

rate波特率:1200, 2400, 4800, 9600, 19200, 38400, 57600和115200可选
scriptModeReply脚本模式协议自动回复:如果为true, ExpOS收到脚本后,自动回复字符串"C+"表示执行成功,“C-”表示执行失败, 只适用于选中ScriptMode协议。

threshold接收事件触发门限值:当接收缓冲区未读字节数等于或者大于此值,触发onReceive事件

device.com0.threshold=10

设定接收缓冲区字节未读字节数等于或者大于10时触发onReceive事件

headEnabled帧头字节检测使能:如果为true,ExpOS自动在接收缓冲区查找head属性指定的字节,如果找到,触发onReceive事件

device.com0.headEnabled=1

使能帧头字节检测功能

head帧头字节定义,输入16进制数,如11表示0x11,只有headEnabled为true时才有效

device.com0.head=0x11

设置待检测的帧头字节为0x11

tailEnabled帧尾字节检测使能:如果为true,ExpOS自动在接收缓冲区查找head和tail属性指定的字节,如果同时找到,触发onReceive事件。只有headEnabled为true时才有效。

device.com0.tailEnabled=1

使能帧尾字节检测功能

tail帧尾字节定义,输入16进制数,如11表示0x11

device.com0.tail=0x11

设置待检测的帧尾字节为0x11

方法


名称功能说明脚本例子
write()

向串口写字节:参数一个或者一个以上,每个参数代表一个字节

device.com0.write(0x55)

向串口发送字节0x55

device.com0.write(0x55, 16, 'A')

向串口发送三字节:0x55, 0x10, 0x41

writeString()向串口写字符串: 参数为一个字符串

device.com0.writeString('This is a test')

向串口写入字符串'This is a test'

readableBytes()串口接收缓冲区中可读字节数

var count=device.com0.readableBytes()

读取接收缓冲区中可读字节数并存到变量count

read()读串口:最多带2个参数,参数1表示读取的字节数,参数2表示是否在接收缓冲区中删除读过的数据

var a = new Array(2)

a = device.com0.read(2)

从串口接收缓冲区读取两个字节并存如数组a中,读完后在接收缓冲区中删除这两个字节

var a = new Array(2)

a = device.com0.read(2, true)

从串口接收缓冲区读取两个字节并存如数组a中,读完后在仍然保留这两个字节在接收缓冲区中

var a = new Array(device.com0.readableBytes())

a = device.com0.read()

从串口接收缓冲区读取所有字节并存如数组a中,读完后清空接收缓冲区

clearReadBuffer()清空接缓冲区

device.com0.clearReadBuffer()

清空串口接收缓冲区

 


下一页