2013-02-01 54 views
-1

我在+ CDS从通道返回时遇到了问题。我正在使用一个64通道的调制解调器,我需要得到这个值。上述AT命令截断+ CDS响应

+CDS: 6,248,"21988 
+CDS: 6,249,"6299224415 
+CDS: 6,39,"11974579414",129,"13/01/31,16:40:30-12","13/02/01,16:40:30-12",70 
+CDS: 6,211,"2199678119",129,"13/01/31,16:40:31-12","13/02/01,16:40:31-12",70 
+CDS: 6,51,"6 
+CDS: 6,105,"11974579414",129,"13/01/31,16:40:32-12","13/02/01,16:40:32-12",70 
+CDS: 6,40,"11973375726",129,"13/01/31, 
+CDS: 6,106,"2199378635",129,"13/01/31,16: 
+CDS: 6,251,"1297228284",129,"13/01/31,16:40:38-12","13/02/01,16:40:38-12",70 
+CDS: 6,53,"2499482633",129,"13/ 
+CDS: 6,243,"2198922817",129,"13/01/31,16:40:45-12","13/02/01 
+CDS: 6,253,"2198070285",129,"13/01/31,16:40:48-12","13/02/01,16:40:48-12",70 
+CDS: 6,43,"2197371789",129,"13/01/31,16:40:51-12","13/02/01,16 
+CDS: 6,170,"11975327641",129,"13/02/01,11:47:58-12","13/02/01,16:41:37-12",0 
+CDS: 6,158,"1982067777",129,"13/02/01,17:36:31-08","13/02/01,17:36:34-08",0 
+CDS: 6,46,"1992200437",129,"13/02/01,17:36:32-08","13/02/0 
+CDS: 6,154,"4891019678",129,"13/01/31,17:52:44-08","13/01/31,17:52:45-08",70 
+CDS: 6,254,"6296236810",129,"13/01/31,16:41:58-12","13/02/01,16:41:59-12", 

在任何行此缺少的信息,我开始:

public PortaCOM(string porta) 
    : base(porta, 115200, Parity.None, 8, StopBits.One) 
{ 
    this.StatusPort = StatusPorta.Ready; 
    this.DiscardNull = true; 
    this.Handshake = Handshake.RequestToSend; 
    //this.RtsEnable = true; 
    //this.DtrEnable = true; 
    //this.ReadTimeout = 12000; 
    //this.ReadTimeout = 12000; 
} 

我用得值:

static void p_DataReceived(object sender, SerialDataReceivedEventArgs e) 
{ 
    var p = (PortaCOM)sender; 
    try 
    { 

     int dataLength = p.BytesToRead; 
     byte[] dados = new byte[dataLength]; 
     int nbrDataRead = p.Read(dados, 0, dataLength); 
     if (nbrDataRead == 0) 
      return; 

     var retorno = Encoding.ASCII.GetString(dados); 
     Console.WriteLine(retorno); 
    } 
    catch (Exception err) { Console.WriteLine(err.Message); } 
} 

请,任何帮助我!

里卡多·贝克

+0

这是只与'+ CSD'一个问题吗?你会从其他命令中得到什么结果,如'at + cpbr = 1,200'或'at + cmgl = 4'。 – hlovdal

+0

喂,固定错误创建一个循环: \t \t \t \t变种B =新列表(); \t \t \t \t而(p.BytesToRead> 0) \t \t \t \t \t b。增加((字节)p.ReadByte()); \t \t \t \t如果(b.IsEmpty()) \t \t \t \t \t回报; \t \t \t \t VAR RETORNO = Encoding.ASCII.GetString(b.ToArray()) –

+0

如果问题解决了,请写出解决方案作为一个答案。 – hlovdal

回答

0

我里面p_DataReceived改变

static void p_DataReceived(object sender, SerialDataReceivedEventArgs e) 
    { 
     var p = (PortaCOM)sender; 
     try 
     { 

      **var b = new List<byte>(); 
      while (p.BytesToRead > 0) 
       b.Add((byte)p.ReadByte()); 
      if (b.IsEmpty()) 
       return;** 

      var retorno = Encoding.ASCII.GetString(b.ToArray()); 

      Console.WriteLine(retorno); 
     } 
     catch (Exception err) { Console.WriteLine(err.Message); } 
    }