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

 我来答
创作者zUzVB1Sl31
2019-09-15 · 编程类资料、英语学习资料
创作者zUzVB1Sl31
采纳数:1331 获赞数:5975

向TA提问 私信TA
展开全部

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 = "端口没打开!";
            }
        }

执行命令,这个事件返回结果。

lycdl
高粉答主

2017-01-08 · 醉心答题,欢迎关注
知道大有可为答主
回答量:2万
采纳率:94%
帮助的人:4926万
展开全部
用C#写程序控制单片机,是可以写的。但重要的也是最关键的问题是,写完的程序不能编译,就等于白写了,没有用了,也就根本控制不了单片机。
因为,还没有C#的编译器,把C#程序编译成HEX文件。
为什么想要用C#写程序呢?很熟练吗?既然C#都熟练了,那基本的C语言程序就更不在话下了,因为,单片机程序是用最基本的C语言写程序的,即keil C。
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式