SerialPort 接收不到数据,搞了一晚上了,求高手帮助(串口通信)
最近在做一个手机短信收发软件,在网上找了些源码,自己调试了半天,总是发送AT指令后读不出数据:以下是我的一个小例子:请问是哪里不行啊。 
 SerialPort   s_port   =   new   SerialPort( "COM1 ",   19200,   Parity.None,   8,   StopBits.One); 
 s_port.Open(); 
 s_port.Write( "AT+CMGR=1\r "); 
 System.Threading.Thread.Sleep(1000);   //   延迟指定时间 
 string   temp   =   s_port.ReadExisting(); 
 MessageBox.Show(temp);   
 我使用的手机是:西门子3508,连接到COM1上,手机连接肯定没有问题:因为可以用串口通信调试程序调试。 
 同样的AT指令放到串口调试程序中可以返回数据,可是这里读出来总是为空 
 不管有什么方法,延时,注册SerialPort1_DataReceived事件,用事件读也没有数据。 
 请问这是怎么一回来啊。我搞了一晚上了,被卡在这里了,请求高手帮助啊。。。。
------解决方案--------------------端口号改为57600行不行
------解决方案--------------------Parity是1又能不?....
------解决方案--------------------没 用过 SerialPort  
  不过我这倒是有个 写好的函数
------解决方案--------------------好像用AT指令时,波特率都设为9600,记得是这样 
 另外,你的AT指令在超级终端里输入后会有数据返回吗?
------解决方案--------------------记错了,不是9600 
 刚看了我手头上的一份文档(深圳一家做Modem的公司提供的),波特率是115200
------解决方案--------------------System.Threading.Thread.Sleep(1000); 
 改这个时间,换成2000或者3000等试试,串口会话有延迟,我以前也遇到这样的问题.
------解决方案--------------------你用DataReceived事件绑定后,事件能触发吗? 
 如果能触发,就说明串口中一定有数据   
 另外,这个ReadExisting方法我没用过,我一般用Read方法,返回一个byte[]数组 
 可能还跟你的编码方式有关
------解决方案--------------------另外,延时这个方法...没什么用,我觉得 :)
------解决方案--------------------你先不要用Sleep,先用DataReceived事件试试看,可能是那个串口发送也是异步的,你一sleep,就卡在那里了,结果还没发就收了
------解决方案--------------------try this  
                     HComPort.BaudRate = 921600;//set to your using 
                     HComPort.DtrEnable = true; 
                     HComPort.RtsEnable = true; 
 --------------------------- 
                 while (ATresult == ATstatus.WaitingResponse) 
                 { 
                     Thread.Sleep(100); 
                     if (HComPort.BytesToRead >  0) 
                     { 
                         ATRx = ATRx + HComPort.ReadExisting(); 
                         if (TestOK(ATRx)) ATresult = ATstatus.OK; 
                         if (TestERROR(ATRx)) ATresult = ATstatus.Error; 
                     } 
                     if (TimerCount >  30) { ATresult = ATstatus.TimingOut;} 
                     else { TimerCount++; }; 
                 }   
------解决方案--------------------学习