php+dio串口通讯,也来一个串口通讯例子,使用Pcomm库的

importwin;importstring;//加载dll,声明函数Pcom = raw.loadDll("\Pcomm.dll");//打开串口,正确返回0;C代码int WINAPI sio_open(int port);sio_open = Pcom.api("sio_open","int(int port)");//关闭串口,正确返回0;C代码int WINAPI sio_close(int port);sio_close = Pcom.api("sio_close","int(int port)");//设置串口参数,正确返回0;C代码int WINAPI sio_ioctl(int port, int baud, int mode);sio_ioctl = Pcom.api("sio_ioctl","int(int port, int baud, int mode)");//读取缓冲区数据,返回数据长度,为0表示没有读到数据;C代码int WINAPI sio_read(int port, char *buf, int len);sio_read = Pcom.api("sio_read","int(int port, pointer buf, int len)");//写入缓冲区数据,返回数据长度;C代码int WINAPI sio_write(int port, char *buf, int len);sio_write = Pcom.api("sio_write","int(int port, pointer buf, int len)");//设置中断函数,用来在接收大量数据的时候产生中断;C代码int WINAPI sio_cnt_irq(int port,VOID (CALLBACK *func)(int port), int count);sio_cnt_irq = Pcom.api("sio_cnt_irq","int(int port, func(int port), int count)");//串口打开函数comopen =function(port,baud,parity,stopbits,wordlength){varret = 0;vari = 0;

ret = sio_open(port);//打开串口if(ret != 0){

win.msgboxTimeout("错误码:"+ret,"串口打开错误");return0;

}

ret = sio_ioctl (port, baud, parity| stopbits | wordlength  );//设置串口参数:波特率、奇偶校验、停止位、数据位if(ret != 0){

win.msgboxTimeout("错误码:"+ret,"串口设置错误");return0;

}

}// 串口发送数据函数comwrite =function(port,str,buf){

str = string.replace(str,"\s","");//去除空格及换行符for(i=1;#str;2){

buf[(i+1)/2] =eval("0X"+string.slice(str,i,i+1));

}varlen = sio_write(port,buf,#str/2)returnlen;

}//串口接收数据函数comread =function(port,buf){varlen = sio_read(port,buf,#buf);varstr =""for(i=1;len;1){

str = str++" "++string.right(string.format("%02X", buf[ i ]),2);//默认转换成有符号字节,因此取最右边两位}returnstr,len;

}

io.open();varport = 1;varbaud = 0x0c;//波特率9600

/*baud = (bits/sec)

0 = 50          6 = 600         12 = 9600           18 = 460800

1 = 75          7 = 1200        13 = 19200          19 = 921600

2 = 110         8 = 1800        14 = 38400

3 = 134.5       9 = 2400        15 = 57600

4 = 150         10 = 4800       16 = 115200

5 = 300         11 = 7200       17 = 230400

*/varwordlength = 0x03;//数据位bit_8

/*bit_cnt (bit 0, 1) =  0x00 = bit_5

0x01 = bit_6

0x02 = bit_7

0x03 = bit_8

*/varparity = 0x18;//奇偶校验EVEN

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值