毕业论文开发语言企业开发JAVA技术.NET技术WEB开发Linux/Unix数据库技术Windows平台移动平台嵌入式论文范文英语论文
您现在的位置: 毕业论文 >> net技术 >> 正文

C#串口 上位机如何向下位机发送命令和接收下位机上传的数据

更新时间:2014-6-7:  来源:毕业论文

位机:pc机
下位机:单片机
pc机与单片机联机通信正常后,上位机怎么向下位机发送命令,单片机收到命令后开始上传预置的数据
请问:pc机如何下发命令和如何读取上传的数据。
我以前对这个一点的不了解的,查了几天也了解了点串口通信
也还是没点头绪。刚到这个公司,他们的下位机已经写好了的,只需要写上位机,可是我不知道怎么写。
希望给位大侠指点一下,最好有代码,谢谢!急用啊!


协议的基本格式是:
起始位标志(1个字节)+通信协议版本号(1个字节)+设备描述(1个字节)
+设备标识码(1个字节)+控制标识码(1个字节)+info字节长度(2个字节)
+控制数据信息(长度不确定)+校验和码(2个字节)+结束码(1个字节) 各个字节都是以十六进制表示。
1. .net中有个串口类,你可以利用。
2. 确定发送的串口号。
3. 设置串口参数(波特率、停止位、奇偶校验)
4. 组合发送的协议格式
5. 以字节型数据发送


接收就简单了。把接收来的字节型数据转化为你所需的就可以。很简单的,你从网上搜串口编程,出来一堆,我给你参考,仅供参考:
用串口类SerialPort

1、打开串口
 public  bool ComOpen(int OutTime, string ComNum, int BaudRate)
        {
            try
            {
                com.PortName = ComNum;            
                com.BaudRate = 9600;          
                com.DataBits = 8;
                //com.Parity = Parity.Even;
                com.WriteTimeout = OutTime;
                com.ReadTimeout = OutTime;
                com.Open();            
            }
            catch
            {
                return false;

                //MessageBox.Show("打开串口失败!", "系统提示");
            }
            return true;
        }
2、先把你的协议转换为byte数据,具体的你自己拼写,下面的是把你的字符串转换为为ascII码,你的十六进制的其实是ascII码形式
ASCIIEncoding MyInfo = new ASCIIEncoding();
byte[] MySend = MyInfo.GetBytes(AlarmCode);

在数组中,起始位一般是0x02还是0x03啊,忘了,你自己看着拼一下

3、串口发送或者接受命令,把你的数组发送出去或者取出来,都一样

public  byte[] ComSend(byte[] sendbyte,int SleepTime)
        {
            //byte[] refbyte = new byte[500];           
            int reallength;
            //try
            //{
                com.Write(sendbyte, 0, sendbyte.Length);
                //return sendbyte;
            //}
            //catch
            //{
            //    //MessageBox.Show("发送数据失败!");  
            //    return null;
            //}
            try
            {
                reallength = com.BytesToRead;
                byte[] refbyte = new byte[reallength];
                reallength = com.Read(refbyte, 0, com.BytesToRead);
                return refbyte;
            }
            catch
            {
     &

[1] [2] 下一页

设为首页 | 联系站长 | 友情链接 | 网站地图 |

copyright©youerw.com 优尔论文网 严禁转载
如果本毕业论文网损害了您的利益或者侵犯了您的权利,请及时联系,我们一定会及时改正。