上位机使用delphi开发,采用串口和单片机通信。波特率1200,没有校验位,一位结束位。使用了第三方控件spcomm。
串口通信协议采用不定长设计,第一个字节表示消息头,每个消息为定长。消息最小长度为2字节,默认为0。一些重要的消息在消息头后面紧跟一个字节的校验位。
发现问题:
1、stc单片机不能向上位机发送0x17,发送的所有0x17不论在何位置均消失,解决方法:绕过0x17
2、串口通信失效,解决方法,降低波特率,单片机函数加上reentrant关键字,中断处理调用的函数体内屏蔽串口中断,上位机检测串口异常,自动重新打开串口,但仍未完全解决串口通信失效问题。
3、控制柜的输入检测失效。将上位机检测改为在单片机检测。但在单片机检测导致重复发送问题,解决方法,加一个延时。
4、上位机不能发送多字节,解决方法,每发送一个字节延时1ms。
Ⅱ 如何学习单片机VB上位机编程
不用跟电脑 弄两片单片机 先慢慢通讯着玩 就行 其实电脑不也是另一个CPU么 追问: 说的是,但是那个我已经做过了,先在想弄个上位机,电脑直接与单片机通信,主要是考虑到以后的无线监测等都能用的上,所以先得学学上位机方面的知识
Ⅲ 80分求助!!!关于单片机的上位机编程问题
可以用VB,VC,LabVIEW去编串口通信,你好像已经编好了。PC机收到数据后的你可以用数组或者文档存储,再用输出函数(绘图函数)来画图就可以了,实时输出的就是实时曲线,存储后需要时输出的是历史曲线。实时的曲线数据用数组存,历史的用文档存。用LabVIEW好像简单一些。具体的你看一下有关方面的资料
Ⅳ 什么是单片机上位机啊
单片机上位机简介:
单片机上位机是指可以直接发出操控命令的计算机,一般是PC/host computer/master computer/upper computer,屏幕上显示各种信号变化(液压,水位,温度等)。下位机是直接控制设备获取设备状况的计算机,一般是PLC/单片机single chip microcomputer/slave computer/lower computer之类的。上位机发出的命令首先给下位机,下位机再根据此命令解释成相应时序信号直接控制相应设备。下位机不时读取设备状态数据(一般为模拟量),转换成数字信号反馈给上位机。简言之如此,实际情况千差万别,但万变不离其宗:上下位机都需要编程,都有专门的开发系统。
Ⅳ 上位机是咋么编程的
我的理解,上位机和下位机,一般是指集中控制系统中的PC机和现场的工控机。上位机(PC机)主要用来发出操作指令和显示结果数据,下位机(工控机)则主要用来监测和执行上位机的操作指令。举个例子,蓄电池生产中,需要按工艺要求进行充电和放电。
上位机是指:人可以直接发出操控命令的计算机,一般是PC,屏幕上显示各种信号变化(液压,水位,温度等)。下位机是直接控制设备获取设备状况的的计算机,一般是PLC/单片机之类的。上位机发出的命令首先给下位机,下位机再根据此命令解释成相应时序信号直接控制相应设备。下位机不时读取设备状态数据(一般模拟量),转化成数字信号反馈给上位机。简言之如此,真实情况千差万别不离其宗。上下位机都需要编程,都有专门的开发系统。
另外,上位机和下位机是通过通讯连接的“物理”层次不同的计算机,是相对而言的。一般下位机负责前端的“测量、控制”等处理;上位机负责“管理”处理。下位机是接收到主设备命令才执行的执行单元,即从设备,但是,下位机也能直接智能化处理测控执行;而上位机不参与具体的控制、仅仅进行管理(数据的储存、显示、打印......人机界面等方面)。常见的DCS系统,“集中-分散(集散)系统”是上位机集中、下位机分散的系统。
在概念上,控制者和提供服务者是上位机.被控制者和被服务者是下位机.也可以理解为主机和从机的关系.但上位机和下位机是可以转换的.
下位机,由单片机完成数据的采集及对装置的控制,而由上位机完成各种复杂的数据处理及对单片机的控制。 2 PC机与单片机8051之间的通信特点 在工业控制系统中,各种数据的采集和执行机构的控制都是由下位机或探测站来完成。
Ⅵ 有点单片机C语言的基础适合哪个上位机编程语言
会C语言的话,C#很容易上手,我都没学过C#,自己做界面也不太难,你是玩单片机的,我也是,我想你的需求应该在于连接串口,调用蓝牙等,调用串口我用C++和C#都写过,C#要方便,而且界面化也很好操作。蓝牙我还没需求,所以没有试过。
你讲的1、和C语言差不多的编程方式,C#简直比C编程容易,而且也是如C++的风格,习惯C的肯定能喜欢C#,大家都讲VB简单,我反而不适用VB,风格跟C不一样,用起来蹩脚;
2.图形界面容易做,C#很容易做图形界面,建立窗口工程就好了,控件放好,内码写好,图形界面半小时能出来。
辛苦打来,望采纳!
Ⅶ C#如何实现上位机的编程,这里主要是通过网口实现pc机与单片机之间的通信。。。最好有实际的例子。谢了。。
c#编写上位机,与单片机通讯,一般采用串口通讯:RS232,RS422,RS485。
通过VS .NET中的串口通讯控件即可实现。
如果下位机是类似基于LINUX内核的ARM,可以采用网口,也可以采用串口。
Ⅷ 单片机与上位机通讯界面的编程应该从哪开始学,用什么编
VB和DELPHI最简单,VC也可以,有第三方控件。用VB和DELPHI学会做你的东西大约要一个月的时间,VB需要有BASIC的基础,DELPHI要PASICAL基础,有基础学的快一些。转化成曲线就更简单了,有图形控件的。
Ⅸ 单片机传输给上位机的是ASCII码,如何在上位机显示为十进制数用C语言编程
如果只是数字0-9的ASCII码,那简单。0-9对应的ASCII码为48-57,上位机将接收到的ASCII码减48就是0-9的数字,两位以上数字自己合并一下问题就解决了,方法有点土但实用。当然,用查表的方式也可以做到,程序稍多一些,要让人帮忙编程序至少要告知:
1,传输给上位机ASCII码的范围;
2,上位机指的是PC还是单片机。
Ⅹ 上位机软件编程
主要是
VC,Delphi
一般来说和单片机通信都是用的串口或者并口和上位机进行通信,C++或者delphi带的控件非常好用.
很多人用C++buider,说很好用,我没用过,你可以考虑一下
个人认为是vc,如果vc很熟悉可以学学Delphi
具体看什么书到书店找找吧,具体的说不好