主题:ETR232i执行DOS命令? 共有34965人关注过本帖 |
---|
foundlore |
1楼 |
ETR232i执行DOS命令? Post By:2005-4-19 11:51:00 [只看该作者]
我想在终端增加一个远程控制执行DOS命令并回传结果的功能,部份代码如下:
sprintf( BufStr,"%s > C:\\TEMP",InMsg ); system( BufStr ); //执行DOS命令 sprintf( BufStr,"FLZSJD" ); //信息头标志 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<|>结尾的字串(包含了DOS命令),BufStr为要回传的字串(长度为len+6)。 但发送DIR命令后回传的是乱码(连信息头都没有了),且用TDRF的DIR看不到C:\TEMP文件,请问是程序错误,还是模块不支持system()函数? |
|
单帖管理 | 引用 | 回复 |
zhl |
2楼 |
Post By:2005-4-19 14:55:00 [只看该作者]
DOS命令执行后的结果重定向到文件中,在DOS环境下是支持的。但是程序中利用system()这样调用不一定能够支持该项应用。
|
|
单帖管理 | 引用 | 回复 |
foundlore |
3楼 |
Post By:2005-4-20 9:13:00 [只看该作者]
但我过去在一块386SX的PC104板上成功做过
|
|
单帖管理 | 引用 | 回复 |
zhl |
4楼 |
Post By:2005-4-20 10:53:00 [只看该作者]
我们在ETR232I上作了测试,是可以的。
调用 system( "dir > list.log" )后,可以检查到list.log 文件内容完全正确。 |
|
单帖管理 | 引用 | 回复 |
foundlore |
5楼 |
Post By:2005-4-22 10:00:00 [只看该作者]
我也又检查了程序,是InMsg指针错了,问题已解决,谢谢!
另外,用GPRS回传结果的字串内容差了一截,是否GPRS包长度的限制?如何处理才能接收到完整内容?请指教 |
|
单帖管理 | 引用 | 回复 |
zhl |
6楼 |
Post By:2005-4-22 11:08:00 [只看该作者]
PPP数据包长度是1500,所以在接收数据时按照此长度来选择。函数返回值为实际接收到的长度。
|
|
单帖管理 | 引用 | 回复 |