using JustinIO;
JustinIO.CommPort ss_port = new JustinIO.CommPort;
 ss_port.PortNum = 1;//端口号
ss_port.BaudRate = 19200; //串口通信波特率
ss_port.ByteSize = 8; //数据位
ss_port.Parity = 0; //奇偶校验
ss_port.StopBits = 1;//停止位
ss_port.ReadTimeout = 1000; //读超时
byte[] WriteBytes=Encoding.ASCII.GetBytes("AT+CGMI\r");
 
try
{
if (ss_port.Opened)       {ss_port.Close();
       ss_port.Open(); //打开串口
     ss_port.Write(WriteBytes); 
string response = Encoding.ASCII.GetString(ss_port.Read(128));
         }
  else
       {
           ss_port.Open(); //打开串口
 ss_port.Write(WriteBytes); 
string response1 = Encoding.ASCII.GetString(ss_port.Read(128));
Console.WriteLine(response1);
        }...
调试没有问题,为何没有读出数据?其中JustinIO是读写公共类,没有问题。

解决方案 »

  1.   

    ss_port.Open(); //打开串口
         ss_port.Write(WriteBytes); 
    string response = Encoding.ASCII.GetString(ss_port.Read(128));1 如果是ss_port.Write(WriteBytes); 请求数据,string response = Encoding.ASCII.GetString(ss_port.Read(128));没有收到,可以考虑ss_port.Write(WriteBytes); 可能有问题,没有发送到单片机,或者发送数据不对.2如果ss_port.Write(WriteBytes); 不是请求数据,那Open到Close这段,可能并未有串口数据过来...
      

  2.   

    我用vb时记得有个属性inputlen=0。试一试。c#没用过。
      

  3.   

    有现成的c#封装API操作串口的实例。
      

  4.   

    楼上可能是说的类JustinIO吧,贴出来看看。或者在哪可以看到。