基于 PComm Lite 的串口通信扩展库
返回所有可用波特率数组
for baud in sio.eachBaudRate(){
}
打开串口,成功返回对象,
参数如果是字符串,打开端口失败返回null,错误信息,错误代码,成功返回对象,
参数如果是数值,打开端口失败仍然会返回对象,可用于绑定已经打开的端口,
不指定参数直接返回对象,可以在后面使用open函数打开端口
强制中止read,getch等读数据函数
强制中止Write,putch等写数据函数
sioportObject.breakIrq(function(port){
/*接收到中断信号时触发时件
在当前界面线程同步触发此事件*/
} )
sioportObject.breakIrqThread(function(port){
var sport = sio.port(port);/*接收到中断信号时触发时件*/
} )
关闭串口
这个函数不会被析构函数自动调用,
应在确认不再使用时调用此函数关闭串口
检查接收数据时是否遇到错误
0表示无错误,小于0表示函数执行错误,大于0时各二进制位作用:
bit 0 on - parity error
bit 1 on - framing error
bit 2 on - overrun error
bit 3 on - overflow error
清除接收、发送缓冲区
对应参数为true清除该缓冲区
无参数时清除接收缓冲区
返回串口波特率
失败返回null,错误信息
返回4个值:
分别表示CTS、RTS硬流控,TX、RX软流控是否开启
获取串口的CTS, DST, DCD, RI线的状态
返回串口的工作模式
返回值为三个,分别为:数据位,停止位,校验位
失败返回null,错误信息
返回读数据总超时,间隔超时两个值,单位毫秒
返回写数据总超时,间隔超时两个值,单位毫秒
读取一个字节码
失败返回null,错误信息
设置串口的工作模式
波特率为数值,省略时使用默认值9600
数据位为数值,可选值为5,6,7,8,省略时默认值为8
停止位可选值为1,2,不指定时默认为1
校验位使用字符串值指定,可选值为"even","odd","spc","mrk",可省略以设置空校验位
返回输入缓冲区字符长度
失败返回null,错误信息
设置串口RTS/DTS,参数使用布尔值
sioportObject.modemIrq(function(port){
/*当硬件线路(CTS, DSR, CD, RI)的电压发生变化时触发时件
在当前界面线程同步触发此事件*/
} )
sioportObject.modemIrqThread(function(port){
var sport = sio.port(port);/*当硬件线路(CTS, DSR, CD, RI)的电压发生变化时触发时件*/
} )
修改端口号并打开端口,成功返回true,
失败返回null,错误信息,错误代码
返回发送缓冲区中剩余的数据长度
发送一个节节码
成功返回长度,失败返回null,错误信息
读取数据,可选指定读取缓冲区长度
成功返回数据,失败返回null,错误信息
如果没有指定长度且没有接收到数据返回null
读取数据到buffer缓冲区,读取长度可省略
成功返回读取长度,失败返回null,错误信息
读取数据并以十六进制编码显示
成功返回数据,失败返回null,错误信息
sioportObject.transmitAscii(5/*秒*/,
function(length,bufSize,buf,total){
/*接收文件协议:ASCII,
这函数会一直等待接收,不需要写到其他事件回调里,
owner 参数为存储接收文件名的 buffer 类型字节数组,
注意文件存储在当前目录下,可使用 io.curDir 函数修改当前目录,
@length 为当前传输大小,@total 为总大小小,其他参数仅用于调试*/
}
)
sioportObject.receiveKermit(
function(length,bufSize,buf,total){
/*接收文件协议:Kermit,
这函数会一直等待接收,不需要写到其他事件回调里,
owner 参数为存储接收多个文件名的 buffer 类型字节数组的数组,
注意文件存储在当前目录下,可使用 io.curDir 函数修改当前目录,
@length 为当前传输大小,@total 为总大小小,其他参数仅用于调试*/
}
)
sioportObject.receiveXmodem1kCrc(
function(length,bufSize,buf,total){
/*接收文件协议:XMODEM, 1K block size, 16 bit CRC,
这函数会一直等待接收,不需要写到其他事件回调里,
owner 参数为存储接收文件名的 buffer 类型字节数组,
注意文件存储在当前目录下,可使用 io.curDir 函数修改当前目录,
@length 为当前传输大小,@total 为总大小小,其他参数仅用于调试*/
}
)
sioportObject.receiveXmodemCheckSum(
function(length,bufSize,buf,total){
/*接收文件协议:XMODEM,CHECKSUM,
这函数会一直等待接收,不需要写到其他事件回调里,
owner 参数为存储接收文件名的 buffer 类型字节数组,
注意文件存储在当前目录下,可使用 io.curDir 函数修改当前目录,
@length 为当前传输大小,@total 为总大小小,其他参数仅用于调试*/
}
)
sioportObject.receiveXmodemCrc(
function(length,bufSize,buf,total){
/*接收文件协议:XMODEM, 16 bit CRC,
这函数会一直等待接收,不需要写到其他事件回调里,
owner 参数为存储接收文件名的 buffer 类型字节数组,
注意文件存储在当前目录下,可使用 io.curDir 函数修改当前目录,
@length 为当前传输大小,@total 为总大小小,其他参数仅用于调试*/
}
)
sioportObject.receiveYmodem(
function(length,bufSize,buf,total){
/*接收文件协议:Ymodem,
这函数会一直等待接收,不需要写到其他事件回调里,
owner 参数为存储接收多个文件名的 buffer 类型字节数组的数组,
注意文件存储在当前目录下,可使用 io.curDir 函数修改当前目录,
@length 为当前传输大小,@total 为总大小小,其他参数仅用于调试*/
}
)
sioportObject.receiveZmodem(
function(length,bufSize,buf,total){
/*接收文件协议:Zmodem,
这函数会一直等待接收,不需要写到其他事件回调里,
owner 参数为存储接收多个文件名的 buffer 类型字节数组的数组,
注意文件存储在当前目录下,可使用 io.curDir 函数修改当前目录,
@length 为当前传输大小,@total 为总大小小,其他参数仅用于调试*/
}
)
发送数据并等待读取响应数据,返回响应数据,
等待过程中不会阻塞界面消息,
发送数据可以在单引号里直接使用16进制编码,例如"AT"可以写为'\x41\x54',
其他参数为可选参数,
如果参数@2指定匹配模式,则对响应数据应用模式匹配并返回结果,
最小读取时间默认为10毫秒,
最少字节数默认为1
此函数等待最少字节数到达,并等待最小读取时间后读取并返回数据
设置串口波特率
失败返回null,错误信息
设置串口流控
设置读数据超时,单位毫秒
设置写数据超时,单位毫秒
sioportObject.termCntIrq(/*当接收到参数 @1 指定字节长度的数据,
在当前界面线程回调参数 @2 指定的函数。
注意在此回调函数内读取串口数据可能返回 null 值。
接收文件的代码不用写在这里。*/,function(port){
var data = sioportObject.read();
if(!data) return;
} )
sioportObject.termCntIrqThread(/*接收到指定个字节时响应事件*/,function(port){
var sport = sio.port(port);
} )
sioportObject.termIrq(/*接收到指定字节码时在当前界面线程同步触发此事件,
接收文件不用写在这个事件里*/,function(port){
} )
sioportObject.termIrqThread(/*线程接收到指定字节码时响应事件*/,function(port){
var sport = sio.port(port);
} )
sioportObject.transmitAscii("发送文件路径",
function(length,bufSize,buf,total){
/*传输文件协议:ASCII
@length 为当前传输大小,@total 为总大小小,其他参数仅用于调试*/
}
)
sioportObject.transmitKermit("文件路径",
function(length,bufSize,buf,total){
/*传输文件协议:Kermit
@length 为当前传输大小,@total 为总大小小,其他参数仅用于调试*/
}
)
sioportObject.transmitXmodem1kCrc("发送文件路径",
function(length,bufSize,buf,total){
/*传输文件协议:XMODEM, 1K block size, 16 bit CRC
@length 为当前传输大小,@total 为总大小小,其他参数仅用于调试*/
}
)
sioportObject.transmitXmodemCheckSum("发送文件路径",
function(length,bufSize,buf,total){
/*传输文件协议:XMODEM,CHECKSUM
@length 为当前传输大小,@total 为总大小小,其他参数仅用于调试*/
}
)
sioportObject.transmitXmodemCrc("发送文件路径",
function(length,bufSize,buf,total){
/*传输文件协议:XMODEM, 16 bit CRC
@length 为当前传输大小,@total 为总大小小,其他参数仅用于调试*/
}
)
sioportObject.transmitYmodem("发送文件路径",
function(length,bufSize,buf,total){
/*传输文件协议:Ymodem
@length 为当前传输大小,@total 为总大小小,其他参数仅用于调试*/
}
)
sioportObject.transmitZmodem("发送文件路径",
function(length,bufSize,buf,total){
/*传输文件协议:Zmodem
@length 为当前传输大小,@total 为总大小小,其他参数仅用于调试*/
}
)
sioportObject.txEmptyIrq(function(port){
/*输出缓冲区最后一个字符发送后触发此事件
在当前界面线程同步触发此事件*/
} )
sioportObject.txEmptyIrqThread(function(port){
var sport = sio.port(port);/*输出缓冲区最后一个字符发送后触发此事件*/
} )
写入数据,
可以在单引号里直接使用16进制编码,例如"AT"可以写为'\x41\x54',
不指定长度时自动获取数据长度
成功返回写入长度,失败返回null,错误信息
写入十六进制编码数据