2010-04-14 76 views
2

我試圖撥打從PHP(我有一個數據庫中的客戶名單,並認爲我可以用它來他們打電話時,我對他們的名字點擊電話號碼串行調制解調器撥號窗口從PHP

這裏我的代碼,它似乎並沒有工作。我可以聽到電話線點擊,但它似乎並沒有撥打。也許我缺少的,需要先發送到ATDT一些命令?

$device = "COM4"; 

exec("mode $device BAUD=9600 PARITY=n DATA=8 STOP=1 xon=off octs=off rts=on"); 

$comport = fopen($device, "r+b"); 

if ($comport === false) { 
    die ("Failed opening com port"); 
} else { 
    echo "Com Port Open"; 
} 

stream_set_blocking($comport, 0); 

$atcmd = "ATDT222222222222\r"; // dial fake number 
if (fwrite($comport, $atcmd) === false) { 
    die ("Failed writing to com port"); 
} else { 
    echo "Wrote $atcmd to com port"; 
} 

sleep(10); // added fix to make program work, was closing port too soon for it to dial 

fclose($comport); 
+0

爲什麼打開無阻塞,如果你是無論如何只要睡覺?完成後讓腳本阻塞然後關閉不是更好嗎?睡覺()劈啪作響。 – 2010-04-14 04:13:45

+0

我不知道爲什麼它使用非阻塞,我使用的是我在網上找到的類php_serial,並且將其簡化爲針對此問題的基礎。 我不知道有關端口,阻塞/非阻塞等,所以我離開它,因爲我發現它。 我同意使用睡眠(10)有點令人費解,但對於有限的使用此腳本將得到,我會爲我工作得很好。不過好點。 – bumperbox 2010-04-14 22:28:14

回答

2

解決了,傻我

所有需要的是FCLOSE 它只是關閉端口它實際上從它似乎好工作做任何撥號 之前,除了之前睡眠()

1

嘗試

$comport = fopen($device, "w+"); 
... 
$atcmd = "ATDT222222222222\r\n"; 
+0

同樣的事情,調制解調器點擊,不撥號 – bumperbox 2010-04-14 02:57:35