主題:ETR232i執(zhí)行DOS命令? 共有40222人關(guān)注過本帖 |
---|
foundlore |
1樓 |
ETR232i執(zhí)行DOS命令? Post By:2005-4-19 11:51:00 [只看該作者]
我想在終端增加一個(gè)遠(yuǎn)程控制執(zhí)行DOS命令并回傳結(jié)果的功能,部份代碼如下:
sprintf( BufStr,"%s > C:\\TEMP",InMsg ); system( BufStr ); //執(zhí)行DOS命令 sprintf( BufStr,"FLZSJD" ); //信息頭標(biāo)志 fp=fopen("C:\\TEMP","rb"); if(!fp) { fseek(fp,0,SEEK_END); len=ftell(fp); fseek(fp,0,SEEK_SET); if( len>0 && len<1000 ) { fread(&BufStr[6],1,len,fp); fclose(fp); } } 其中InMsg是以<|>\0<|>結(jié)尾的字串(包含了DOS命令),BufStr為要回傳的字串(長度為len+6)。 但發(fā)送DIR命令后回傳的是亂碼(連信息頭都沒有了),且用TDRF的DIR看不到C:\TEMP文件,請(qǐng)問是程序錯(cuò)誤,還是模塊不支持system()函數(shù)? |
|
單帖管理 | 引用 | 回復(fù) |
zhl |
2樓 |
Post By:2005-4-19 14:55:00 [只看該作者]
DOS命令執(zhí)行后的結(jié)果重定向到文件中,在DOS環(huán)境下是支持的。但是程序中利用system()這樣調(diào)用不一定能夠支持該項(xiàng)應(yīng)用。
|
|
單帖管理 | 引用 | 回復(fù) |
foundlore |
3樓 |
Post By:2005-4-20 9:13:00 [只看該作者]
但我過去在一塊386SX的PC104板上成功做過
|
|
單帖管理 | 引用 | 回復(fù) |
zhl |
4樓 |
Post By:2005-4-20 10:53:00 [只看該作者]
我們?cè)贓TR232I上作了測試,是可以的。
調(diào)用 system( "dir > list.log" )后,可以檢查到list.log 文件內(nèi)容完全正確。 |
|
單帖管理 | 引用 | 回復(fù) |
foundlore |
5樓 |
Post By:2005-4-22 10:00:00 [只看該作者]
我也又檢查了程序,是InMsg指針錯(cuò)了,問題已解決,謝謝!
另外,用GPRS回傳結(jié)果的字串內(nèi)容差了一截,是否GPRS包長度的限制?如何處理才能接收到完整內(nèi)容?請(qǐng)指教 |
|
單帖管理 | 引用 | 回復(fù) |
zhl |
6樓 |
Post By:2005-4-22 11:08:00 [只看該作者]
PPP數(shù)據(jù)包長度是1500,所以在接收數(shù)據(jù)時(shí)按照此長度來選擇。函數(shù)返回值為實(shí)際接收到的長度。
|
|
單帖管理 | 引用 | 回復(fù) |