谁做过单片机与vb上位机串口控制单片机通信的工程

在线时间26 小时威望0 金钱37 人气-1 最后登录注册时间帖子精华0积分275阅读权限20UID208068
中级程序员, 积分 275, 距离下一级还需 1725 积分
擂点0 人气-1 威望0 注册时间精华0帖子
单片机与上位机通信是以什么的数据格式发送的呢?
比如说我单片机发送0xaa,单片机先转化为ASCII码的二进制呢?还是直接转化为二进制的bcd码发送出去,??
在线时间26 小时威望0 金钱37 人气-1 最后登录注册时间帖子精华0积分275阅读权限20UID208068
中级程序员, 积分 275, 距离下一级还需 1725 积分
擂点0 人气-1 威望0 注册时间精华0帖子
是以ASCII码的的格式通信的吗
在线时间1610 小时威望1870 金钱8021 人气451 最后登录注册时间帖子精华2积分23118阅读权限200UID113337
追梦计算机及电子技术实验室
擂点0 人气451 威望1870 注册时间精华2帖子
没理解LZ的问题。。。
说的是串行还是并行还是其他什么端口?
跟ASCII码好象没什么关系。。。
难道UNICODE就不能传给单片机了么?
不管什么东西单片机都只理解成二进制数,
具体位数、速率、格式和意义还要看单片机的接口宽度和通信协议。。。
不能一概而论。。。
我是坏蛋我怕谁
/notfound.htm
在线时间1610 小时威望1870 金钱8021 人气451 最后登录注册时间帖子精华2积分23118阅读权限200UID113337
追梦计算机及电子技术实验室
擂点0 人气451 威望1870 注册时间精华2帖子
在线时间26 小时威望0 金钱37 人气-1 最后登录注册时间帖子精华0积分275阅读权限20UID208068
中级程序员, 积分 275, 距离下一级还需 1725 积分
擂点0 人气-1 威望0 注册时间精华0帖子
串口传输数据,比如说我要传一个十六进制数0xaa ,单片机或上位机是先转化成ASCII码,然后以ASCII的二进制形式传输的吗
在线时间26 小时威望0 金钱37 人气-1 最后登录注册时间帖子精华0积分275阅读权限20UID208068
中级程序员, 积分 275, 距离下一级还需 1725 积分
擂点0 人气-1 威望0 注册时间精华0帖子
比如说我单片机传输一个十进制数5,那么在电脑上面接收到的是一个什么数据呢,我什么都不转化,直接用text控件显示出来就是ASCII码,可是,我直接拿5来对着ASCII码表对,十进制数5对应的ASCII字符又不是我显示出来的那个字符,,如果我转化成十进制数再显示的话就正确了,请高手解释一下
在线时间26 小时威望0 金钱37 人气-1 最后登录注册时间帖子精华0积分275阅读权限20UID208068
中级程序员, 积分 275, 距离下一级还需 1725 积分
擂点0 人气-1 威望0 注册时间精华0帖子
比如说我单片机传输一个十进制数5,那么在电脑上面接收到的是一个什么数据呢,我什么都不转化,直接用text控件显示出来就是ASCII码,可是,我直接拿5来对着ASCII码表对,十进制数5对应的ASCII字符又不是我显示出来的那个字符,,如果我转化成十进制数再显示的话是完全正确的,请高手解释一下
在线时间0 小时威望0 金钱22 人气0 最后登录注册时间帖子精华0积分22阅读权限10UID216311
初级程序员, 积分 22, 距离下一级还需 178 积分
擂点0 人气0 威望0 注册时间精华0帖子
没有什么区别,看你的单片机有没有处理接收的字符,没有就是接什么就发什么!单片机不转化!VB做上位机_视频在线观看_百度视频
VB做上位机相关视频:
大家都在搜:
百度视频搜索结果源于互联网视频网站,系计算机系统根据搜索热度自动排列,不代表百度赞成被搜索网站的内容或立场。VB编写单片机上位机
Visual&Basic6.0是一个可视化窗口环境的编程软件,目前使用Visual&Basic6.0可以快速简单编写单片机中的串口通信上位机程序。Visual&Basic6.0是一个可视化窗口环境的编程软件,目前使用Visual&Basic中的一个名为Microsoft&Communication&Control(简称MSComm)的通信控件。
一、MSComm通讯控件的方式。
(1)事件驱动。利用OnComm事件捕获并处理通信事件,所有的通信事件和通信错误列表都包含在控件的CommEvent属性中。
(2)查询方式。在程序关键功能之后,通过检查CommEvent的值来查询事件和错误。
二、MSComm控件的主要属性及事件
(1)CommPort:设置或返回串行端口号,缺省值1。
(2)Setting:设置或返回串口通信参数,格式为“波特率,奇偶校验位,数据位,停止位”。例如:MSComm1.Setting:=&9600,n,8,
(3)PortOpen:打开或关闭串行端口,格式为:MSComm1.PortOpen:={True|False}
(4)InBufferSize:设置或返回接收缓冲区的大小,缺省值为1024字节。
(5)InBufferCount:返回接收缓冲区内等待读取的字节数,可通过设置该属性为0来清空接收缓冲区。
(6)RThreshold:该属性为一阀值,它确定当接收缓冲区内的字节个数达到或超过该值后就产生代码为ComEvReceive的OnComm事件。
(7)SThreshold:该属性为一阀值,它确定当发送缓冲区内的字节个数少于该值后就产生代码为ComEvSend的OnComm事件。
(8)InputLen:设置或返回接收缓冲区内用Input读入的字节数,设置该属性为0表示Input读取整个缓冲区的内容。
(9)Input:从接收缓冲区读取一串字符。
(10)OutBufferSize:设置或返回发送缓冲区的大小,缺省值为512字节。
(11)OutBufferCount:返回发送缓冲区内等待发送的字节数,可通过设置该属性为0来清空缓冲区。
(12)OutPut:向发送缓冲区传送一串字符。
如果在通信过程中发生错误或事件,就会触发OnComm事件,并由CommEvent属性代码反映错误类型,在通信程序的设计中可根据该属性值来执行不同的操作。CommEvent属性值及其含义如下:
(1)ComEvSend:值为1,发送缓冲区的内容少于SThreshold指定的值。
(2)ComEvReceive:值为2,接收缓冲区内字符数达到RThreshold指定的值。
(3)ComEvFrame:值为1004,硬件检测到帧错误。
(4)ComEvRxOver:值为1008,接收缓冲区溢出。
(5)ComEvTxFull:值为1010,发送缓冲区溢出。
(6)ComEvRxParity:值为1009,奇偶校验错误。
(7)ComEvEOF:值为7,接收数据中出现文件尾(ASCII码为26)字符。
三、参考例程
Private&Sub&Combo2_Click()
MSComm1.Settings&=&Combo2.Text&+&",n,8,1"
Private&Sub&Command6_Click()
On&Error&GoTo&uerror:
IfCommand6.Caption&=&"打开串口"&Then
MSComm1.PortOpen&=&True
Command6.Caption&=&"关闭串口"
Shape1.FillColor&=&RGB(0,&255,&0)
MSComm1.PortOpen&=&False
Command6.Caption&=&"打开串口"
Shape1.FillColor&=&RGB(128,&128,&128)
msg$&=&"无效端口号"
Title$&=&"串口调试"
X&=&MsgBox(msg$,&48,&Title$)
Private&Sub&Form_Load()
Text1&=&""
Text3&=&""
Combo2.ListIndex&=&0
Combo1.ListIndex&=&0
Timer1.Interval&=&Val(Text2)
mPort&=&Combo1.ListIndex&+&1
MSComm1.RThreshold&=&1
MSComm1.InputLen&=&0
IfOption3&Then&MSComm1.InputMode&=&comInputModeBinary
Private&Sub&Form_Unload(Cancel&As&Integer)
IfMSComm1.PortOpen&Then&MSComm1.PortOpen&=&False
Private&Sub&MSComm1_OnComm()
Dim&BytReceived()&As&Byte
Dim&strBuffAs&String
Select&Case&<mEvent
Case&comEvReceive
IfOption4&Then
Text3&=&Text3&&&MSComm1.Input
strBuff=&MSComm1.Input
BytReceived()&=&strBuff
strBuff=&""
Dim&i&As&Integer
For&i&=&0&To&UBound(BytReceived)
IfLen(Hex(BytReceived(i)))&=&1&Then
strBuff=&strBuff&&"0"&&&Hex(BytReceived(i))&&&"&"
strBuff=&strBuff&&Hex(BytReceived(i))&&&"&"
Text3&=&Text3&&&strBuff
End&Select
Private&Sub&Option3_Click()
MSComm1.InputMode&=&comInputModeBinary
Private&Sub&Option4_Click()
MSComm1.InputMode&=&comInputModeText
Private&Sub&Timer1_Timer()
Dim&SendBuff()&As&Byte
Dim&Bytflag&As&String
Dim&strBuffAs&String
Dim&i&As&Integer
Dim&flag&As&Boolean
IfOption2&Then
MSComm1.Output&=&Text1.Text
For&i&=&1&To&Len(LTrim(Text1))
Bytflag&=&Mid(Text1,&i,&1)
If&Bytflag&&=&"0"&And&Bytflag&&=&"9"&Or&Bytflag&&=&"a"&And&Bytflag&&=&"f"&Or
Bytflag&&=&"A"&And&Bytflag&&=&"F"&Then
flag&=&True
flag&=&False
Ifflag&Then
IfLen(LTrim(Text1))&Mod&2&&&&0&Then
strBuff=&"0"&&&LTrim(Text1)
strBuff=&Text1
ReDim&SendBuff(Len(strBuff)&/&2&-&1)
For&i&=&0&To&UBound(SendBuff)
SendBuff(i)&=&Val("&h"&&&Mid(strBuff,&2&*&i&+&1,&2))
MSComm1.Output&=&SendBuff
msg$&=&"请输入&HEX&格式数据:&a-f、&A-F、&0-9"
Title$&=&"串口调试助手"
X&=&MsgBox(msg$,&48,&Title$)
Timer1.Enabled&=&False
Command3.Caption&=&"自动发送"
Private&Sub&Combo1_Click()
mPort&=&Combo1.ListIndex&+&1
Private&Sub&Command1_Click()
Text1&=&""
Private&Sub&Command2_Click()
Dim&SendBuff()&As&Byte
Dim&Bytflag&As&String
Dim&strBuffAs&String
Dim&i&As&Integer
Dim&flag&As&Boolean
Timer1.Enabled&=&False
IfMSComm1.PortOpen&Then
IfOption2&Then
MSComm1.Output&=&Text1.Text
For&i&=&1&To&Len(LTrim(Text1))
Bytflag&=&Mid(Text1,&i,&1)
If&Bytflag&&=&"0"&And&Bytflag&&=&"9"&Or&Bytflag&&=&"a"&And&Bytflag&&=&"f"
Or&Bytflag&&=&"A"&And&Bytflag&&=&"F"&Then
flag&=&True
flag&=&False
Ifflag&Then
IfLen(LTrim(Text1))&Mod&2&&&&0&Then
strBuff=&"0"&&&LTrim(Text1)
strBuff=&Text1
ReDim&SendBuff(Len(strBuff)&/&2&-&1)
For&i&=&0&To&UBound(SendBuff)
SendBuff(i)&=&Val("&h"&&&Mid(strBuff,&2&*&i&+&1,&2))
MSComm1.Output&=&SendBuff
msg$&=&"请输入&HEX&格式数据:&a-f、&A-F、&0-9"
Title$&=&"串口调试助手"
X&=&MsgBox(msg$,&48,&Title$)
msg$&=&"请打开串口"
Title$&=&"串口调试助手"
X&=&MsgBox(msg$,&48,&Title$)
Private&Sub&Command3_Click()
IfMSComm1.PortOpen&Then
IfCommand3.Caption&=&"自动发送"&Then
Timer1.Enabled&=&True
Timer1.Interval&=&Val(Text2)
Command3.Caption&=&"关闭自动"
Timer1.Enabled&=&False
Command3.Caption&=&"自动发送"
msg$&=&"请打开串口"
Title$&=&"串口调试助手"
X&=&MsgBox(msg$,&48,&Title$)
Private&Sub&Command4_Click()
Text3&=&""
Private&Sub&Command5_Click()
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。【教程贴】用VB开发上位机|我爱单片机 - 数码之家
查看完整版本: [--
&Pages: ( 4 total )
赞助商链接
串口通信是MCU跟PC通信经常用到的一种通信方式,做界面、写上位机程序的编程语言、编译环境有不少,诸如VB、VC++,Delphi、LABVIEW等等,不过无论黑猫还是白猫,能够抓到老鼠的就是好猫,用VB无疑是最快速最简便的,实现的功能也足够强大,足以满足我们的基本需要了。我最近用VB写出了一个用于数据采集的串口上位机程序,实现数据的接收和实时绘图,这里和大家分享一下,让大家也体验一下单片机和PC通信的乐趣。整个程序只需要不到30行程序,我将会给这30行程序加上最为详备的注释,这样即使你从未使用VB制作过上位机程序,也能照猫画虎的编写出属于自己的上位机程序。一,制定设计思路首先,我们要制定一下自己的串口通讯协议,为了方便设计,通讯协议中将采用字符型数据(遵循ASCII字符集)进行传输,一共5个字节数据,下位机按照从第一字节到第五字节的顺序以字符型形式发送数据,第一个字节是符号符,第二,三,四字节分别是百位,十位,和个位数字,第五个字节是结束符。通讯协议:
1&& 符号位&&&& 2&&&&百位&&3&&&&十位4&&&&个位&&&&&&&&&&5&&&&结束符&&&&注释:&&&&1,符号符,+(2B)或—(2D),表示数据的正负&&&&2,3,4,百位,十位,和个位数字&&&&5,结束符,用大写字母A(41)表示&&&&接着,我们就要明确设计思路了,这个程序的设计将采用Microsoft Visual Basic 6.0(以下简称VB6.0)作为编译环境,运用串口通讯控件MSComm,通过计时器控件实现以查询方式编写的串口数据的接收和实时绘图。二,程序界面设计(1)创建一个标准EXE工程:启动VB6.0,在自动弹出的“新建工程”窗口中单击“标准 EXE”图标,然后单击“打开”按钮即可创建一个标准EXE工程。将弹出的窗体的Caption属性设置为串口通讯与实时绘图程序。[attachment=1364699] (1)添加串口通信控件MSComm:VB的串口通信控件MSComm并不会主动出现在工具箱中,当我们需要MSComm控件时,首先要把它加入工具箱中,选择“工程”菜单下的“部件...”子菜单,在弹出的“部件”对话框中,在“控件”选项卡属性中选中“Microsoft Comm Control 6.0”,单击“确定”按钮后,在工具箱中就出现了一个形似电话的图标,这就是MSComm控件,选择MSComm控件的图标,将它添加到适当位置,采用默认名称MSComm1。[attachment=1364697][attachment=1364696](1)添加一个Timer控件用于自动接收字符:选择Timer控件的图标,将它添加到适当位置,采用默认名称Timer1,Interval属性为1,Enabled属性为False。(2)添加两个文本框控件用于显示数据:选择TexrBox控件的图标,将它添加到适当位置,采用默认名称Text1与Text2,Text属性均设置为空,设置Text2的属性MultiLine=True, ScrollBars=2-Vertical。Text1用于显示最新的一组数据,Text2用于储存之前的所有数据。(3)添加一个图形控件PictureBox用于实时绘图:选择PictureBox控件的图标,将它添加到适当位置,拉伸成适当大小,采用默认名称Picture1,设置BackColor属性为白色。(4)添加一个按钮控件CommandButton用于打开串口:选择CommandButton控件的图标,将它添加到适当位置,采用默认名称Command1,设置Caption属性为打开串口。(5)添加一个Shape控件用于显示串口状态:选择Shape控件的图标,将它添加到适当位置,采用默认名称Shape1,设置FillStyle=0-Solid,Shape=3-Circle,FillColor设置为红色。(8)设置完成的程序窗体界面:[attachment=1364695] 三,程序代码编写 (1)双击程序中的按钮控件,在弹出的代码窗口中键入以下程序Dim x As Integer&#39;定义变量x用于记录数据个数Dim y0 As Integer&#39;定义变量y0用于记录上一次数据Dim y As Integer&#39;定义变量y用于记录当前数据Private Sub Command1_Click()&#39;下面的程序是在点击打开串口按钮后时要运行的&&mPort = 4&&&&&&&&&&&& &#39;设置通信端口号为COM4,这个要根据自己所使用的串口而定&&MSComm1.Settings = &4800,n,8,1&&&&& &#39;设置串口参数,表示传输速率为4800bit/s,没有奇偶校验位,8位数据位,1位停止位&#39;这里串口上位机的设置一定要和下位机一致 MSComm1.InputMode = 0&&&&&&&&&&&& &#39;接收文本型数据,如果设置为1则以二进制的形式取回传入的数据 MSComm1.PortOpen = True&&&&&&&&&& &#39;打开通信端口4&#39;True即为打开端口,设置为False则为关上端口&#39;如果CommPort 属性设置为一个非法端口,则会产生错误68(设备无效)&&Picture1.Scale (0, 1000)-(200, -1000)&#39;定义Picture1的坐标系,左上角坐标值 (0, 1000)到右下角坐标值(200, -1000)&&Picture1.Line (0, 0)-(200, 0), RGB(0, 0, 255)&#39;用RGB颜色(0,0,255)画出X轴&&Shape1.FillColor=RGB(0,255,0)&#39;将指示灯调整为绿色&&Timer1.Enabled = True&#39;启动Timer1定时器End Sub(2)双击程序中的Timer控件的图标,在弹出的代码窗口中键入以下程序Private Sub Timer1_Timer()&&Dim buf$&#39;定义一个字符串变量&&buf = Trim(MSComm1.Input)&&&&&&&&&&&#39;将串口接收缓冲区内的数据读入buf变量中&&If Len(buf) && 0 And x &= 200 Then&#39;判断缓冲区内是否存在数据与数据个数有没有到达最大值&&&&&&&&&&&&Text1.Text = Text1.Text + buf&#39;Text1中的数据等于原有的数据加上新接收的数据&&End If&&If buf = &A&&&And&&x &= 200 Then&&&&&&&&&&&&&&&#39;如果接收到结束符“A”且数据个数没有到达最大值y = Val(Text1.Text)&#39;用Val函数将Text1中的内容转换为数字然后赋值给y,正负的符号也会一同转换Picture1.PSet (x, y), RGB(255, 0, 0)&#39;在Picture1上(x,y)位置用RGB颜色(255,0 ,0)颜色画点Picture1.Line (x - 1, y0)-(x, y), RGB(255, 0, 0)&#39;在上次数据(x-1,y1)和这次数据(x,y)之间用RGB颜色(255,0 ,0)颜色连线x = x + 1&#39;数据个数加1y0 = y&#39;把y值赋给用于记录上一个数据的变量y1Text2.Text = Text2.Text & x & &&& & & Str(y) & Chr(13) & Chr(10)&#39;Text2中的数据等于原先的数据加上数据编号加上数据的值以及Chr(13) & Chr(10)组成的换行符Text2.SetFocusText2.SelStart = Len(Text2.Text)&#39;设置垂直滚动条自动滚动Text1.Text = &&&#39;清空Text1控件中的数据&&End IfEnd Sub四,调试运行我采用STC89C52作为下位机,采用11.0592M的晶振,通过串口发送数据进行测试。下面就以Keil uVision3作为编译环境,用C语言编写一个小例子用于测试,读者可以把这些做成一个模块加入到自己的程序中用于实验。首先加载头文件:#include &reg52.h&定义一个字符串数组:unsigned code tab[10]={&#39;0&#39;,&#39;1&#39;,&#39;2&#39;,&#39;3&#39;,&#39;4&#39;,&#39;5&#39;,&#39;6&#39;,&#39;7&#39;,&#39;8&#39;,&#39;9&#39;,};然后我们需要一个初始化串口通信的子函数,这里的设置要和上位机一致:void StartUART( void )&& //波特率4800bit/s,无奇偶校验位,8位数据位,1位停止位{&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& &&&& SCON = 0x50;&&&& TMOD = 0x20;&&&& &&&& TH1 = 0xFA;&&&& TL1 = 0xFA;&&&& &&&& PCON = 0x00;&&&& TR1 = 1; }因为我们的上位机用Timer控件用于自动接收字符,所以下位机还需要个延时函数,用于在每次传输数据后稍微延时一下,否则会出现丢失数据的现象:void DELAY_MS (unsigned int a)&&//毫秒级延时函数{&&&&&&&&&&&&while( --a != 0){&&&&&&&&&&&&&&&&for(i = 0; i & 125; i++);&&&&}}这样就可以从通过串口进行测试了(以发送123为例):void main(void){&&&&&&&&StartUART();&&&&&&//初始化串口&&&&SBUF=0X2B;&&&& //发送字符“+”&&&&DELAY_MS(20);&&//延时20ms&&&&SBUF=tab[1];&&&& //发送百位的“1”&&&&&&&&DELAY_MS(20);&&&&SBUF=tab[2];&&&& //发送十位的“2”&&&&&&&&DELAY_MS(20);&&&&SBUF=tab[3];&&&&&&&&//发送个位的“3” && &&&&DELAY_MS(20);&&&&&&SBUF=0X41;&&&&//发送字符“A”&&DELAY_MS(20);}在向单片机烧入程序,连接好串口后就可以进行测试了。测试过程:1,在VB6.0环境中,单击运行,然后点击启动2,单击“打开串口”按钮打开串口,如果正常打开串口的话指示灯会变成绿色。3,接通下位机电源,这时就可以看到从下位机不断传来的数据123以及实时绘图的画面。[attachment=1364698] 至此,一个串口通讯与实时绘图的程序就开发完成了,在VB6.0中使用文件菜单下的生成工程1.exe...就可以生成.exe文件了,这样就能更方便使用。这篇文章只是个小例子,介绍了使用VB6.0开发串口上位机的过程,读者只需要稍微修改下程序,就可以适应自己的不同要求,例如通过给下位机送来的数据加上不同的结束符,从而使用不同的颜色实时绘图,或者将接收到的数据乘以0.1,将原来的百位,十位,个位,变成十位,个位,小数位等等。希望这篇文章能够抛砖引玉,让大家能够发挥自己的想象力,设计出更加友好的界面,为自己的上位机软件添加强大的功能。 [attachment=1373614]
赞助商链接
把整个源码也贴出来吧
赞助商链接
不错,,很好的入门材料
还在大学的时候玩过VB,确实很简单。
[attachment=1366173] 整个程序
感谢楼主分享,很实用的资料!!
这个好,稍微改一下就可以用于实时环境温度控制显示曲线!!
做电池充放电曲线很合适
全部源代码贴在这里了。。。[attachment=1370246]
“未找到方法或数据成员”是什么意思?[attachment=1372995]
为什么我安装的软件里面的MSComm控件提示不能用?
这篇教程很好,怎么没有人顶呢?
感谢lz,刚好要用到。
留个名,学习了!,不错的资料。
对入门来说,帮助太大了,还有截图介绍
好想看看里面的东西啊
这个要支顶一下!
很好的教程!标记下慢慢看!
非常好的教程,对入门的很有用,楼主写的详细简单,很好
m币不足,不能下载呀,现在还想自己做一个呢!学习了、
谢谢楼主分享,我一直想做上位机,不知道从何下手
解说很详细,图文并茂
不错,不过我总感觉VB有点木,我最近在学习C#。也是用来写上位机的
感谢楼主分享,很实用的资料.
学习记号备用
mark,标记一下,慢慢学习
lou zhu&&hao&&ren&&
呵呵 写的不错 简单 明了 ,&&VB写这种东西是方便很多的 , 咱也靠这个吃了十几年的饭了, 现在还在用呢
学习了!mark
MARK 有空再回来
留个脚印,,有空慢慢看,,
留个脚印,好资料
&&&&&&&& 学习下!!!!!!
好帖子要支持
等我筹够5000金豆,换了M币一定给你哈。。。。。太好了
楼主好人啊,可惜我下不了,没有M币了,能发我邮箱么qq
我来留个记号看看
学了几天VB,只会做简单的对话框。这是个好资料,收藏了!
有用vc的教程就更好了
顶一下谢谢了
留个名,学习了!,不错的资料
站位留名,以备后用.
先记下,慢慢再学。
最近一直在想学 上位机开发,但手头资料很少,尝试了好多语言,感觉都不太顺手,C用的比较多,其他的用起来怎么都不顺,现在在看杨中科的C语言也能干大事,试试C语言的编程吧,总之我感觉上位机比单片机编起来难些。。。
留个名,学习了!,不错的资料
希望有更多的源码共享,3Q
学习,学习,再学习!!!!
不错,搞东西想要用上位机还没决定,正在纠结不会用,谢谢楼主。
留个名,学习了!
学习了,还是挺有用的
查看完整版本: [--
Powered by
Gzip enabled用VB开发PC与单片机通信的上位机程序_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
用VB开发PC与单片机通信的上位机程序
上传于||文档简介
&&PC机与单片机通信 上位机的界面设计方法
阅读已结束,如果下载本文需要使用2下载券
想免费下载本文?
定制HR最喜欢的简历
下载文档到电脑,查找使用更方便
还剩1页未读,继续阅读
定制HR最喜欢的简历
你可能喜欢

我要回帖

更多关于 单片机与上位机通信 的文章

 

随机推荐