用AT发送文件的指令搞不清楚!不知道Windows的超级终端是这么工作的!!

解决方案 »

  1.   

    发送信息用Write()方法,如何发文件啊!!!!请教了!!
      

  2.   

               private void serialPort1_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e)
                    {
                FileStream Save = new FileStream(@"E:/received.dat", FileMode.Append, FileAccess.Write);
                Byte[] array = new byte[1024];
                int count = serialPort1.BytesToRead;
                serialPort1.Read(array, 0, count);
                Save.Write(array, 0, count);
                Save.Close();
                }             这里所有的操作都是同步的,异步的我还没研究过。。        下面是发送端的代码: private void button1_Click(object sender, EventArgs e)
            {
                Byte[] arry = new Byte[100];            try
                {
                    serialPort1.Open();
                 //   serialPort2.Open();
                    //  if (serialPort1.IsOpen) MessageBox.Show("Serial 1 opened");
                }
                catch
                {
                    MessageBox.Show("Port one open Failed");            }            FileInfo file = new FileInfo(@"E:\test.BMP");
                FileStream Send = new FileStream(@"E:\test.BMP", FileMode.Open, FileAccess.ReadWrite);            for (int i = 0; i < Send.Length/100; i++)
                {
                    Send.Read(arry, 0, 100);
                    //线程挂起250mS
                  //  System.Threading.Thread.SpinWait(250);                //Thread.sleep(int)也能使程序挂起。。不过容易让人感觉程序失去响应
                    serialPort1.Write(arry, 0, 100);
                } //每次向串口发送100个字节,最后再把不足100字节的结尾给发送过去
                Send.Read(arry, 0,(int) (Send.Length%100));
                serialPort1.Write(arry, 0, (int)(Send.Length % 100));
                
                serialPort1.Close();
                Send.Close();        }
            
      

  3.   


    请教javacaspnet大哥,还有两点不明白!
    1、为什么每次只发送100字节,不可以一次发送完整的所有字节吗?
    2、接收端怎么才能判断文件已经发送完毕,然后处理?
      

  4.   

     对于熟悉MSComm控件的程序设计者,SerialPort类是相当容易上手的。在进行串口通讯时,一般的流程是设置通讯端口号及波特率、数据位、停止位和校验位,再打开端口连接,发送数据,接收数据,最后关闭端口连接这样几个步骤。     数据接收的设计方法在这里比较重要,采用轮询的方法比较浪费时间,在Visual Basic中的延时方法中一般会调用API并用DOEvents方法来处理,但程序不易控制,建议采用DataReceived事件触发的方法,合理的设 置ReceivedBytesThreshold的值,若接收的是定长的数据,则将ReceivedBytesThreshold设为接收数据的长度,若 接收数据的结尾是固定的字符或字符串则可采用ReadTo的方法或在DataReceived事件中判断接收的字符是否满足条件。     SerialPort类读取数据的许多方法是同步阻塞调用,尽量避免在主线程中调用,可以使用异步处理或线程间处理调用这些读取数据的方法。     由于DataReceived事件在辅线程被引发,当收到完整的一条数据,返回主线程处理或在窗体上显示时,请注意跨线程的处理,C#可采用控件异步委托的方法Control.BeginInvoke及同步委托的方法Invoke。
      

  5.   


     学习C Sharp主要的目的就是为了给项目做一个PC端的界面,并且通过串口和所用的CC2430之间通信。C#里面的串口类非常好用,这里就不详细说了。。         下面是接收端的事件           private void serialPort1_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e)
                    {
                FileStream Save = new FileStream(@"E:/received.dat", FileMode.Append, FileAccess.Write);
                Byte[] array = new byte[1024];
                int count = serialPort1.BytesToRead;
                serialPort1.Read(array, 0, count);
                Save.Write(array, 0, count);
                Save.Close();
                }             这里所有的操作都是同步的,异步的我还没研究过。。        下面是发送端的代码: private void button1_Click(object sender, EventArgs e)
            {
                Byte[] arry = new Byte[100];            try
                {
                    serialPort1.Open();
                 //   serialPort2.Open();
                    //  if (serialPort1.IsOpen) MessageBox.Show("Serial 1 opened");
                }
                catch
                {
                    MessageBox.Show("Port one open Failed");            }            FileInfo file = new FileInfo(@"E:\test.BMP");
                FileStream Send = new FileStream(@"E:\test.BMP", FileMode.Open, FileAccess.ReadWrite);            for (int i = 0; i < Send.Length/100; i++)
                {
                    Send.Read(arry, 0, 100);
                    //线程挂起250mS
                  //  System.Threading.Thread.SpinWait(250);                //Thread.sleep(int)也能使程序挂起。。不过容易让人感觉程序失去响应
                    serialPort1.Write(arry, 0, 100);
                } //每次向串口发送100个字节,最后再把不足100字节的结尾给发送过去
                Send.Read(arry, 0,(int) (Send.Length%100));
                serialPort1.Write(arry, 0, (int)(Send.Length % 100));
                
                serialPort1.Close();
                Send.Close();        }