基于 PComm Lite 的串口通信扩展库
返回所有可用波特率数组
for baud in sio.eachBaudRate(){
}
打开串口,成功返回对象(可传入其他线程使用)。
失败返回 null,错误信息,错误代码。
参数 @1 可用数值或包含数值的字符串指定要打开的 COM 串口号。
不指定参数直接返回对象,可以在后面使用 open 函数打开端口
直接绑定当前进程内已打开的串口,
返回对象可传入其他线程使用。
串口是进程独占资源,进程退出会自动释放已打开的串口。
参数 @1 可用数值或包含数值的字符串指定要打开的 COM 串口号。
强制中止read,getch等读数据函数
强制中止Write,putch等写数据函数
SioPortObject.breakIrq(function(sioPort){
/*接收到中断信号时触发时件
在当前界面线程同步触发此事件*/
} )
SioPortObject.breakIrqThread(回调函数,ownerObject,...breakIrqThread(function(sioPort){
/*接收到中断信号时触发时件
- 参数 @1 指定的回调函数并非在调用线程中执行,需遵守线程函数规则。
此调用会覆盖之前设置的回调,回调函数为 null 时注销事件。
回调保证排队执行,不会有重入问题。
参数 @ownerObject 用于自定义回调函数的 owner 参数
如果未指定 @ownerObject 则默认设为 当前 sio.port 对象.
- 其他参数将作为回调线程函数的参数。
如果未自定义首人回调参数,则默认为当前 sio.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(sioPort){
/*当硬件线路(CTS, DSR, CD, RI)的电压发生变化时触发时件
在当前界面线程同步触发此事件*/
} )
SioPortObject.modemIrqThread(回调函数,ownerObject,...modemIrqThread(function(sioPort){
/*当硬件线路(CTS, DSR, CD, RI)的电压发生变化时触发此事件。
- 参数 @1 指定的回调函数并非在调用线程中执行,需遵守线程函数规则。
此调用会覆盖之前设置的回调,回调函数为 null 时注销事件。
回调保证排队执行,不会有重入问题。
参数 @ownerObject 用于自定义回调函数的 owner 参数
如果未指定 @ownerObject 则默认设为 当前 sio.port 对象.
- 其他参数将作为回调线程函数的参数。
如果未自定义首人回调参数,则默认为当前 sio.port 对象。*/
} )
修改端口号并打开端口,成功返回 true,
失败返回 null,错误信息,错误代码
返回发送缓冲区中剩余的数据长度
发送一个节节码
成功返回长度,失败返回 null,错误信息
读取数据,可选指定读取缓冲区长度
成功返回数据,失败返回 null,错误信息
如果没有指定长度且没有接收到数据返回null
读取数据到buffer缓冲区,读取长度可省略
成功返回读取长度,失败返回 null,错误信息
读取数据并返回为十六进制编码格式。
每 2 个 16 进制编码表示一个字节,以空格作为分隔符。
例如读取字符串为"AT"则返回 16 进制编码后的字符串 "41 54" 。
失败返回 null,错误信息
SioPortObject.receiveAscii(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(sioPort){
var data = SioPortObject.read();
if(!data) return;
} )
SioPortObject.termCntIrqThread(指定长度,回调函数,ownerObject,...termCntIrqThread(/*接收到指定个字节时响应事件
- 参数 @1 指定的回调函数并非在调用线程中执行,需遵守线程函数规则。
此调用会覆盖之前设置的回调,回调函数为 null 时注销事件。
回调保证排队执行,不会有重入问题。
参数 @ownerObject 用于自定义回调函数的 owner 参数
如果未指定 @ownerObject 则默认设为 当前 sio.port 对象.
- 其他参数将作为回调线程函数的参数。
如果未自定义首人回调参数,则默认为当前 sio.port 对象。*/,function(sioPort){
} )
SioPortObject.termIrq(/*接收到指定字节码时在当前界面线程同步触发此事件,
接收文件不用写在这个事件里*/,function(sioPort){
} )
SioPortObject.termIrqThread(指定字节码,回调函数,ownerObject,...termIrqThread(/*线程接收到指定字节码时响应事件
- 参数 @1 指定的回调函数并非在调用线程中执行,需遵守线程函数规则。
此调用会覆盖之前设置的回调,回调函数为 null 时注销事件。
回调保证排队执行,不会有重入问题。
参数 @ownerObject 用于自定义回调函数的 owner 参数
如果未指定 @ownerObject 则默认设为 当前 sio.port 对象.
- 其他参数将作为回调线程函数的参数。
如果未自定义首人回调参数,则默认为当前 sio.port 对象。*/,function(sioPort){
} )
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(sioPort){
/*输出缓冲区最后一个字符发送后触发此事件
在当前界面线程同步触发此事件*/
} )
SioPortObject.txEmptyIrqThread(回调函数,ownerObject,...txEmptyIrqThread(function(sioPort){
/*输出缓冲区最后一个字符发送后触发此事件
- 参数 @1 指定的回调函数并非在调用线程中执行,需遵守线程函数规则。
此调用会覆盖之前设置的回调,回调函数为 null 时注销事件。
回调保证排队执行,不会有重入问题。
参数 @ownerObject 用于自定义回调函数的 owner 参数
如果未指定 @ownerObject 则默认设为 当前 sio.port 对象.
- 其他参数将作为回调线程函数的参数。
如果未自定义首人回调参数,则默认为当前 sio.port 对象。*/
} )
参数 @1 指定要写入的数据,
可用单引号包围的转义字符表示 16 进制编码,例如"AT"可以写为'\x41\x54'。
可选用参数 @2 指定要写放的字节长度。
不指定写入长度时自动获取参数 @1 指定数据的长度。
成功返回写入长度,失败返回 null,错误信息
写入十六进制编码的数据。
每 2 个 16 进制编码表示一个字节,可选使用空格作为分隔符。
例如参数 "41 54" 表示写入字符串 "AT" ,空格可省略。