主题:ETR232i执行DOS命令? 共有53443人关注过本帖 |
---|
foundlore |
1楼 |
![]() |
ETR232i执行DOS命令? ![]()
我想在终端增加一个远程控制执行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楼 |
![]() |
![]()
DOS命令执行后的结果重定向到文件中,在DOS环境下是支持的。但是程序中利用system()这样调用不一定能够支持该项应用。
|
单帖管理 | 引用 | 回复 ![]() |
foundlore |
3楼 |
![]() |
![]()
但我过去在一块386SX的PC104板上成功做过
|
单帖管理 | 引用 | 回复 ![]() |
zhl |
4楼 |
![]() |
![]()
我们在ETR232I上作了测试,是可以的。
调用 system( "dir > list.log" )后,可以检查到list.log 文件内容完全正确。 |
单帖管理 | 引用 | 回复 ![]() |
foundlore |
5楼 |
![]() |
![]()
我也又检查了程序,是InMsg指针错了,问题已解决,谢谢!
另外,用GPRS回传结果的字串内容差了一截,是否GPRS包长度的限制?如何处理才能接收到完整内容?请指教 |
单帖管理 | 引用 | 回复 ![]() |
zhl |
6楼 |
![]() |
![]()
PPP数据包长度是1500,所以在接收数据时按照此长度来选择。函数返回值为实际接收到的长度。
|
单帖管理 | 引用 | 回复 ![]() |