Re: [請益] 如何用php連接rs232
我解決了這個問題了,所以我把我的經驗PO上來,
希望有跟我一樣問題的人,可以得到一點幫助
一開始,我嘗試用php與機器連接,然後丟一個訊息給機器,
讓它可以傳回我想要的訊息
(這個部份如果有問題的人,可能要先看一下關於modbus的資料,
通常,你必須要有那台機器的modbus的通訊協定的資料,你才會
知道你丟什麼,機器傳什麼回來)
於是我先使用rs232通訊測試軟體,與機器連接,並丟訊息給機器,
結果當然是成功得到我需要的訊息回來
(這裡先打出我所丟的訊息)=>05 03 01 57 00 01 35 A2
於是我嘗試使用php來達到相同的效果,但都失敗
失敗的例子:
$str = "05 03 01 57 00 01 35 A2";
$str[0]= "05";
$str[1]= "03";
$str[2]= "01";
$str[3]= "57";
$str[4]= "00";
$str[5]= "01";
$str[6]= "35";
$str[7]= "A2";
我想,可能會有人認為我可以試試其他的型態,例如十進位,
或十六進位之類的,基本上能試的我都試了,我可以說我把有可能的,
或是我自己都覺得不太可能的,都試過了,都不能成功
在一位朋友的指導下,我終於知道,
最重要的部份在於,我跟本就不知道我丟了什麼出去
所以最重要的就是,我要去收我丟的東西
有兩種辦法可以做到
第一種是去下載軟體
(在這裡引用別人的文章,畢竟是從上面得知的)
http://blog.linym.net/archives/157
不過我剛剛上去看,連結好像掛了
第二種是你將rs232的傳送pin和接收pin用電線接起來
然後你再寫程傳送和接收,就可以了
http://tw.knowledge.yahoo.com/question/?qid=1406010617842
(把2跟3接起來)
成功的例子:
<?php
`mode com4: BAUD=9600 PARITY=N data=8 stop=1 xon=off`;
$fp = fopen ("COM4:", "w+");
if (!$fp) {
echo "Uh-oh. Port not opened.";
} else {
$str = chr(5).chr(3).chr(1).chr(87).chr(0).chr(1).chr(53).chr(162);
fputs ($fp, $str);
sleep(1);
$rec = fgets ($fp);
echo hexdec(dechex(ord($rec[3])).dechex(ord($rec[4])));
}
fclose($fp);
?>
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.124.45.148
→
02/26 21:02, , 1F
02/26 21:02, 1F
推
02/26 22:37, , 2F
02/26 22:37, 2F
→
02/26 22:37, , 3F
02/26 22:37, 3F
推
02/26 22:46, , 4F
02/26 22:46, 4F
推
02/27 01:09, , 5F
02/27 01:09, 5F
推
02/27 02:27, , 6F
02/27 02:27, 6F
討論串 (同標題文章)
完整討論串 (本文為第 2 之 2 篇):
3
12
PHP 近期熱門文章
PTT數位生活區 即時熱門文章