永发信息网

怎么用C#写程序控制单片机

答案:3  悬赏:0  手机版
解决时间 2021-03-03 01:31
怎么用C#写程序控制单片机
最佳答案
c#有个串口控件,你看到没有serialport,给串口发送指令。
        public void opencom(SerialPort st, out string msg)
        {
            if (com_sta == "打开")
            {
                DataTable tb = ac.tblocal("select * from user_set");
                st.PortName =(tb!=null&&tb.Rows.Count>0)?Convert.ToString(tb.Rows[0]["com_set"]) : "COM1";
                st.BaudRate = 19200;
                st.StopBits = StopBits.One;
                st.Parity = Parity.Even;
                st.DataBits = 8;
                st.Handshake = Handshake.None;
                st.ReadTimeout = 1000;
                st.ReadBufferSize = 1024;
                st.WriteBufferSize = 1024;
                try
                {
                    st.Open();
                    msg = "连接成功!";
                    com_sta = "关闭";
                }
                catch
                {
                    msg = "连接失败!";
                }
            }
            else
            {
                st.Close();
                msg = "端口被关闭!";
                com_sta = "打开";
            }
        }打开你的串口,当然也可以通过蓝牙或者无线接收工具。

向设备发送命令,(MODBUSx16校验10位命令)举例:
        public void send_data(SerialPort st, string send_txt, out string msg)
        {
            if (com_sta == "关闭")
            {
                byte[] send = new byte[] { 00, 00, 00, 00, 00, 00, 00, 00 };
                string[] gam = send_txt.Trim().Split(' ');
                for (int i = 0; i < gam.Length; i++)
                {
                    send[i] = Convert.ToByte(gam[i], 16);
                }
                string yh = modbus.ToModbusCRC16(send_txt, true);
                send[gam.Length] = Convert.ToByte(yh.Substring(0, 2), 16);
                send[gam.Length + 1] = Convert.ToByte(yh.Substring(2, 2), 16);
                string str = "";
                foreach (var xs in send)
                {
                    str += Convert.ToString(xs, 16).ToUpper().Length == 1 ? "0" + Convert.ToString(xs, 16).ToUpper() + " " : Convert.ToString(xs, 16).ToUpper() + " ";
                }
                //发送
                try
                {
                    Thread.Sleep(5);
                    st.Write(send, 0, send.Length);
                    msg = "准备就绪";
                }
                catch { msg = "erro"; }
            }
            else
            {
                msg = "端口没打开!";
            }
        }


执行命令,这个事件返回结果。
全部回答
用C#写程序控制单片机,是可以写的。但重要的也是最关键的问题是,写完的程序不能编译,就等于白写了,没有用了,也就根本控制不了单片机。 因为,还没有C#的编译器,把C#程序编译成HEX文件。 为什么想要用C#写程序呢?很熟练吗?既然C#都熟练了,那基本的C语言程序就更不在话下了,因为,单片机程序是用最基本的C语言写程序的,即keil C。
想用c#写个程序控制51单片机再控制路灯开关是可行的哦。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
安徽国富产业投资基金管理有限公司地址在什么
钟表悬挂位置
干岔子南村怎么去啊,有知道地址的么
怎么复制门禁卡ic卡扇区的工具
2.06x1.2的积是3位小数,0.05x0.06的积是4位小
美其乐餐厅连锁:A808地址有知道的么?有点事
韩雪《想起》的歌词~
团购使用微信零钱付款退款时能退回零钱吗
甲公司是一个制造企业,为增加产品产量决定添
清丰县城哪里招工?
金土地烧烤的清炒虾仁好不好吃
西塘度假村在什么地方啊,我要过去处理事情
逆境成才的例子。 要古代的。
比较拉丁美洲与非洲气候类型的异同,并简要说
通过工行个人网上银行添加账户时提示“2258”
推荐资讯
二战中的一位苏联将领
想让孩子明年进天津市河西区台湾路小学,跨片
【波纹管膨胀节】膨胀节与波纹管的区别
volunteer as a teacher为题写一片作文
shinyruo为什么是skt的
日记《年前年后》的事情带(题目)400个洗字
【简单数学题】给我一些简单的训练逻辑思维的
我想给自己起一个别名,在认识新朋友的时候,
塑料软管有个地方裂开个小口,怎么补上呢?
活动方案的排版有没有标准的格式?
崩溃大陆老奶奶任务
品味鱼火锅我想知道这个在什么地方
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?