2017-08-22 44 views
1

我正在使用传真调制解调器来获取一个字符串中的电话号码。我试图在串行端口发送一个命令。我使用下面的代码:当发送命令到串行端口它不工作

private static string PhoneNumber; 
private SerialPort mySerialPort; 

private void Form1_Load(object sender, EventArgs e) 
{ 
mySerialPort = new SerialPort("COM3"); 
mySerialPort.BaudRate = 115200; 
mySerialPort.Parity = Parity.None; 
mySerialPort.StopBits = StopBits.One; 
mySerialPort.DataBits = 8; 
mySerialPort.Handshake = Handshake.None; 

mySerialPort.Open(); 

mySerialPort.WriteLine("at#cid=1");//It doesnt recognise this line 



mySerialPort.DataReceived += new SerialDataReceivedEventHandler(DataReceivedHandler);  
    } 

    private static void DataReceivedHandler(object sender, SerialDataReceivedEventArgs e) 
    { 
     SerialPort sp = (SerialPort)sender; 
     string indata = sp.ReadExisting(); 

     messageBox.Show(indata); 
    } 

我没有采取任何错误,但问题是,我键入它的命令不起作用。通常情况下,如果它能工作,它会给我的电话号码,现在它不显示任何东西。

如果我将在超级终端中键入此命令,它工作正常!所以我想我的代码有些问题。

+0

是串口是否正确?你需要添加错误处理吗?设备是否正确插入?你有正确的波特率,奇偶校验,停止位等吗? –

+1

在发送任何命令之前附加到'DataReceived'事件 –

+0

您可能需要在命令末尾添加'\ n',大多数串行接口使用换行符来告诉命令何时完成 –

回答

0

您可能想要在之前打开DataReceived事件,并打开端口并发送任何命令。

+0

我尝试过,但它并没有工作 – drs

+0

您可能要设置一个'ReadTimeOut'喜欢这个 - 'mySerialPort.ReadTimeout = SerialPort.InfiniteTimeout;' – Cooleshwar

2

我用\ r后我的命令,它的工作完美。谢谢你的意见!

这里是我的代码:

mySerialPort.WriteLine("at#cid=1\r");