真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

php發(fā)送串口數(shù)據(jù) php接收前端傳的數(shù)組

用PHP如何接收串口的數(shù)據(jù)

假設(shè)這個(gè)頁(yè)面有一個(gè)功能需要操作并返回某字符串,還用一下代碼可以實(shí)現(xiàn)執(zhí)行并讀取返回值。

公司專注于為企業(yè)提供網(wǎng)站建設(shè)、做網(wǎng)站、微信公眾號(hào)開(kāi)發(fā)、商城網(wǎng)站定制開(kāi)發(fā),微信小程序,軟件按需求定制設(shè)計(jì)等一站式互聯(lián)網(wǎng)企業(yè)服務(wù)。憑借多年豐富的經(jīng)驗(yàn),我們會(huì)仔細(xì)了解各客戶的需求而做出多方面的分析、設(shè)計(jì)、整合,為客戶設(shè)計(jì)出具風(fēng)格及創(chuàng)意性的商業(yè)解決方案,創(chuàng)新互聯(lián)更提供一系列網(wǎng)站制作和網(wǎng)站推廣的服務(wù)。

$fp = fopen("","r");

$ret= fgetss($fp,255);

echo $ret."br";

fclose($fp);

串口發(fā)送與接收數(shù)據(jù)

使用RS-485串口進(jìn)行通訊。

1.定義串口接收數(shù)據(jù)的緩沖區(qū),最大可以保存64個(gè)字節(jié) u8 RS485_RX_BUF1[64];

2.定義接收發(fā)送數(shù)據(jù)的長(zhǎng)度 u8 RS485_RX_CNT;

3.發(fā)送數(shù)據(jù)的函數(shù)一般有兩個(gè)printf和 USART_SendData,這里主要說(shuō)USART_SendData的使用。printf實(shí)現(xiàn)的是格式化字符串,字符串比較有優(yōu)勢(shì)。

USART_SendData傳遞單個(gè)字符和指令。

4.給發(fā)送方定義一個(gè)標(biāo)記位 u32 flags_send1; flags_send1

5.要發(fā)送的事件很多定義一個(gè)枚舉類型的數(shù)據(jù),將所有要發(fā)送的事件放入枚舉類型數(shù)據(jù)中。

枚舉類型數(shù)據(jù)將第一個(gè)定為1,其他的數(shù)據(jù)依次加1.

6.定義一個(gè)發(fā)送事件函數(shù)SendCmd(u8 cmd)

定義

7.假設(shè)要傳遞E_CKEYDN_INUSE1事件,要實(shí)現(xiàn)事件的傳遞,就應(yīng)該將事件做參數(shù)傳入SendCmd(u8 cmd)函數(shù)

此時(shí)flags_send1 |= EBIT(9)=;由第四點(diǎn)知道flags_send1是一個(gè)32位的無(wú)符號(hào)整型數(shù)據(jù)。所以 flags_send1 = 0000 0000 0000 0000 0000 0001 1111 1111

8.(1)UARTSend1()函數(shù)

此時(shí)的flags_send1 = 0000 0000 0000 0000 0000 0001 1111 1111;

sb[2] = (flags_send1 0) 0xff = 1111 1111;

sb[3] = (flags_send1 8) 0xff = 0000 0001;

sb[4] = (flags_send1 16) 0xff = 0000 0000;

sb[5] = (flags_send1 24) 0xff = 0000 0000;

(2)checksum()函數(shù)

d0=(senddata 0) 0xff=0000 0001 1111 1111;

d1=(senddata 8) 0xff=0000 0001 0xff=0000 0000 0000 0001;

d2=(senddata 16) 0xff=0000 0000 0xff = 0000 0000 0000 0000;

d3=(senddata 24) 0xff=0000 0000 0xff = 0000 0000 0000 0000;

sum=0000 0010 0000 0000;

~sum=1111 1101 1111 1111;

sb[6] = (sum 0) 0xff = 1111 1111 0xff = 1111 1111 ;

sb[7] = (sum 8) 0xff = 1111 1101;

(3)

為什么定義sb[8]的前兩位是0x55,0xaa?

0xaa是1010 1010,0x55是0101 0101在通訊編碼原理中,應(yīng)該避免過(guò)多的重復(fù)0或者1,因?yàn)楫?dāng)傳輸變成一個(gè)長(zhǎng)0/1時(shí),一個(gè)脈沖干擾就會(huì)將數(shù)據(jù)截?cái)?,增加誤碼的概率。若通訊機(jī)不能接受10101010或者01010101,那么就是線路出現(xiàn)問(wèn)題。這是一個(gè)判斷線路狀態(tài)的手段。

9.串口1接收數(shù)據(jù)

(1)通過(guò)UARTRead1()函數(shù)實(shí)現(xiàn)

receive += (RS485_RX_BUF1[2] 0) = 0000 0000 0000 0000 0000 0000 1111 1111; ;

receive += (RS485_RX_BUF1[3] 8) = 0000 0000 0000 0000 0000 0001 1111 1111

receive += (RS485_RX_BUF1[4] 16) = 0000 0000 0000 0000 0000 0001 1111 1111

receive += (RS485_RX_BUF1[5] 24) = 0000 0000 0000 0000 0000 0001 1111 1111

(2)將receive傳入checksum(u32 senddata)函數(shù)中

d0= 0000 0000 1111 1111;

d1=0000 0000 0000 0001

d2= 0000 0000 0000 0000

d3=0000 0000 0000 0000

sum=0000 0001 0000 0000

~sum = 1111 1110 1111 1111

(3)定義接收數(shù)據(jù)標(biāo)記位是 u32 flags_receive1;

通過(guò)判斷RS485_RX_BUF1[6] 、RS485_RX_BUF1是否等于 ((sum 0) 0xff)、((sum 8) 0xff))來(lái)判斷讀入的數(shù)據(jù)是不是正確的。

RS485_RX_BUF2[6] ==1111 1111

RS485_RX_BUF2[7] == 1111 1110

正確時(shí)

接收到的數(shù)據(jù)是flags_receive1 = receive= 0000 0000 0000 0000 0000 0001 1111 1111;

不正確時(shí) flags_receive1 |= EBIT(E_ERROR); 接收數(shù)據(jù)標(biāo)記位置為錯(cuò)誤位。

php如何利用串口連接電路板

php在部分應(yīng)用偶爾和串口直接通信,需要和rs232、rs485接口上的數(shù)據(jù)進(jìn)行通信。

php與串口通信,基本有兩種途徑,通過(guò)php擴(kuò)展dio,下載dio擴(kuò)展:http://在php.ini打開(kāi)dio擴(kuò)展。

dio開(kāi)啟后可以通過(guò)dio_opendio_read等函數(shù)進(jìn)行通信。

但dio默認(rèn)只是在linux下的,好像pecl也有編譯后的php_dio.dll,但我在win下測(cè)試其實(shí)無(wú)法正常使用,可能是我php版本太高,dio擴(kuò)展如果能打開(kāi),網(wǎng)上自然有很多實(shí)例。


名稱欄目:php發(fā)送串口數(shù)據(jù) php接收前端傳的數(shù)組
本文網(wǎng)址:http://weahome.cn/article/hjcpco.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部