首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

用2005的SerialPort类向端口发“at”命令,希望从串口中读出“ok”,但结果不是这样的,有关问题解决了4天了,要急死人了!马上给分

2012-01-14 
用2005的SerialPort类向端口发“at”命令,希望从串口中读出“ok”,但结果不是这样的,问题解决了4天了,要急死人

用2005的SerialPort类向端口发“at”命令,希望从串口中读出“ok”,但结果不是这样的,问题解决了4天了,要急死人了!!马上给分
我的计算机连着一个modem,在超级终端中向串口输入“at”,返回“ok”,我在程序里也向达到这这样的效果,可是不行啊,输入什么指令,就从端口返回什么指令,比如说输入“at”,就返回“at”,我用的类是c#2005的SerialPort类,下面是我的代码,谁能说说怎么回事,在线等,马上给分。

public   partial   class   Form1   :   Form
        {
                private   SerialPort   sp   =   null;
                public   Form1()
                {
                        InitializeComponent();
                }

                private   void   button1_Click(object   sender,   EventArgs   e)
                {
                        try
                        {
                                sp   =   new   SerialPort( "COM1 ");
                                sp.ReadTimeout   =   5000;
                                sp.Open();
                        }
                        catch   (Exception   ex)
                        {
                                MessageBox.Show(ex.Message);
                        }
                }

                private   void   button2_Click(object   sender,   EventArgs   e)
                {
                        try
                        {
                                sp.Write(textBox1.Text);
                        }
                        catch   (Exception   ex)
                        {
                                MessageBox.Show(ex.Message);
                        }
                }

                private   void   button3_Click(object   sender,   EventArgs   e)
                {
                        try


                        {
                                /*string   text=null;
                                char[]   buffer   =   new   char[10];
                                sp.Read(buffer,0,6);
                                for   (int   i   =   0;   i   <   buffer.Length;   i++)
                                {
                                        text   +=   buffer[i];
                                }
                                textBox2.Text   =   text;*/
                               
                                /*string   text   =   null;  
                                char   t   =   (char)sp.ReadChar();
                                text+=t.ToString();
                                while   (true)
                                {
                                        t   =   (char)sp.ReadChar();
                                        if   (t   ==   '\0 ')   break;
                                        else   text   +=   t.ToString();
                                }
                                textBox2.Text   =   text;*/

                                string   text   =   null;
                                byte[]   t   =   new   byte[20];
                                char[]   c   =   new   char[20];
                                sp.Read(t,   0,   t.Length);


                                sp.Read(t,   0,   t.Length);
                                c   =     Encoding.ASCII.GetChars(t);
                                int   i;
                                for   (i   =   0;   i   <   c.Length;   i++)
                                {
                                        if   (c[i]   ==   'O '   ||   c[i]   ==   'K ')
                                                text   +=   c[i].ToString();
                                }
                                  textBox2.Text   =   text;
                        }
                        catch   (Exception   ex)
                        {
                                MessageBox.Show(ex.Message);
                        }
                }
        }


[解决办法]
看协议,估计是发送格式的问题。
[解决办法]
能返回AT。。。。。。说明通讯没问题,多半是协议问题
[解决办法]
学习
帮你顶上去!
[解决办法]
超级终端都能返回正确指令,串口类不行,可以检查一下串口设定,奇偶,校验,速率,数据位...
[解决办法]
最好读一下modem的说明文档之类的
[解决办法]
for (i = 0; i < c.Length; i++)
{
if (c[i] == 'O ' || c[i] == 'K ')
text += c[i].ToString();
}
应该是这个语句的问题

[解决办法]
c=System.Text.Encoding.Default.GetChars(t);
[解决办法]
学习
[解决办法]
呵呵 发送的字符串后面要加一个 0x0D modem才执行 这个at命令

热点排行