问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

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

发布网友 发布时间:2022-06-30 04:38

我来回答

2个回答

热心网友 时间:2023-10-14 17:07

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

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

热心网友 时间:2023-10-14 17:07

用C#写程序控制单片机,是可以写的。但重要的也是最关键的问题是,写完的程序不能编译,就等于白写了,没有用了,也就根本控制不了单片机。
因为,还没有C#的编译器,把C#程序编译成HEX文件。
为什么想要用C#写程序呢?很熟练吗?既然C#都熟练了,那基本的C语言程序就更不在话下了,因为,单片机程序是用最基本的C语言写程序的,即keil C。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
5数字寓意是什么意思 如何在 iPhone14上恢复已删除的照片? 红井源 醇香胡麻油 2.5L-购买最佳价格 python如何实现修改当前文件夹下所有文件名称? python遍历输出所有文件 用Python遍历指定文件夹下所有文件 Python:读取指定路径下的文件,含子文件夹,可指定文件类型 谁有治疗网瘾的好方法? 孩子有网瘾又叛逆怎么办 退伍证名字错了怎么办 穿背心式文胸会不会容易下垂? 女人穿背心式的内衣好不好 胶瓜炒鸡肉好吃吗?有营养吗? 电费收规定价0.85每度,另收0.3元一度的电损线损及变压器维护费合法吗_百度问一问 物业收取商铺电损费合理吗 物业收取电损费百分之7合理吗 线路损耗(线损)计算公式以及商业电的收费标准是多少?... 国家电损收取标准 商业用电公摊电损百分之42合理吗 电损收取标准 用宽带和无线路由设置wifi显示“wan口未连接”,怎么办。。? 怎样从log查看解锁密码- 问一问 如何减轻飞机起飞时的超重感? 超过最大起飞重量时飞机能起飞吗? 飞机“超重”为何不能起飞? 飞机起飞超重是往外喷油吗? 按风水灶台方向哪边好 100w的太阳能电池板实际能使用的功率怎么那么低,我给12v45AH的电池充电电流只有3.5相当于 水电瓶145AH多少安 纸玫瑰2主要讲的什么 怎么用网页控制单片机? 上海到北京火车票多少钱 郭德纲的相声败家子讲的是什么 郭德纲的相声败家子怎样 话说,哪个号称少女时代失误王?? 少女时代MAMA失误 少女时代失误合辑里面貌似是允儿被勾了鞋子都掉了是哪期 少女时代genie侑俐失误是哪场 少女时代mr.mr mcd失误是哪一期 少女时代和super junior发生了什么? 少女时代失误王里,sunny和yuri跳舞的歌叫什么 少女时代成员泰妍唱功受质疑的原因是什么? 少女时代Jessica在一次综艺节目里跳舞鞋给掉了 今年2011SBS歌谣大战少女时代jessica是怎么了。。怎么一直弄耳麦呢??是失误么。。还是怎么了?? 求圣斗士星失动画片中黄金十二宫实力排名? 奔驰GLB左后视镜内侧一闪一闪的小红点是什么? 大众探歌280舒适版左后视镜有个小红点一闪一闪的是怎么回事? 反光镜红色一显一显 大众汽车靠反光镜处有个小红点不停的闪是怎么回事- 问一问 宝马320i晚上内后视镜红点闪烁会消耗电瓶电吗?