5885|3

5

帖子

0

TA的资源

一粒金砂(中级)

楼主
 

上位机(VB6.0)与下位机STM32 USB接口通讯 多谢 [复制链接]

请问下,我是用VB6.0做上位机,STM32做下位机。通过上位机VB发送一个指令,下位机(STM32)收到后,执行对应的命令,这是怎么实现的,例如STM32的PB0~PB7分别点亮8个LED发光二极管!从VB中发送出来
地址 &H00,&H01,&H02,&H03,&H04,&H05,&H06,&H07
电平 1        1        1      1         1       1       1        1
对应下位机
灯的状况  
LED0  LED1  LED2   LED3   LED4   LED5   LED6   LED7
亮     亮   亮    亮     亮    亮    亮     亮
这些USB协议是怎么定义设置
多谢各位

[ 本帖最后由 jewen_he 于 2012-8-24 08:31 编辑 ]
此帖出自stm32/stm8论坛

最新回复

用虚拟串口吧 简单  详情 回复 发表于 2012-8-24 08:54
点赞 关注
 

回复
举报

3

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
我也刚开始做这个,用上位机控制下位机,在学习。
此帖出自stm32/stm8论坛
 
 

回复

1027

帖子

0

TA的资源

五彩晶圆(中级)

板凳
 
用虚拟串口吧
简单
此帖出自stm32/stm8论坛

点评

多谢您,上位机的程序是: Public Const stopX = &H0 Public Const moveX = &H1 Public Const JogPX = &H2 Public Const JogNX = &H3 Public Const PosX = &H4 Public Const stopY = &H10 Public Const mo  详情 回复 发表于 2012-8-24 11:59
 
 

回复

5

帖子

0

TA的资源

一粒金砂(中级)

4
 

回复 板凳 sblpp 的帖子

多谢您,上位机的程序是:
Public Const stopX = &H0
Public Const moveX = &H1
Public Const JogPX = &H2
Public Const JogNX = &H3
Public Const PosX = &H4

Public Const stopY = &H10
Public Const moveY = &H11
Public Const JogPY = &H12
Public Const JogNY = &H13
Public Const PosY = &H14

Public Const moveC = &HB0
Public Const moveN = &HB1
Public Const SetPWM = &HC0
Public Const SetIO = &HC1
Public Const SetRERX = &HC2  
Public Const SetRERY = &HC3  
Public Const SetSonX = &HC4
Public Const SetSonY = &HC5
Public Const RstFLG = &HC6
Public Const SetHdrFlg = &HC7

Public Sub RegSetIO(ByVal port As Byte, ByVal status As Byte)
    Dim sbuf(3) As Byte
   
    sbuf(0) = SetIO  
    sbuf(1) = port
    sbuf(2) = status     
    frmMain.MSComm1.Output = sbuf
End Sub

Private Sub cmdHdrGo_Click()  
    fraPass.Visible = False
    If HeadUp = True Then
        HeadUp = False
        RegSetIO 9, 0 'A
        RegSetIO 10, 0 'B
        RegSetIO 11, 0 'C
        RegSetIO 12, 0 'D
    Else
        HeadUp = True
        If chkHeaderA.Value Then RegSetIO 9, 1  'A
        If chkHeaderB.Value Then RegSetIO 10, 1 'B
        If chkHeaderC.Value Then RegSetIO 11, 1 'C
        If chkHeaderD.Value Then RegSetIO 12, 1 'D
    End If
End Sub


下位机的程序


void Set_IO(unsigned char index,unsigned char sbit)
{         switch(index)
        {        
        case 1:
                GPIO_WriteBit(GPIOA,GPIO_Pin_4,sbit);
                break;
        case 2:
                GPIO_WriteBit(GPIOA,GPIO_Pin_5,sbit);
                break;
        case 3:
                GPIO_WriteBit(GPIOA,GPIO_Pin_6,sbit);
                break;
        case 4:
                   GPIO_WriteBit(GPIOA,GPIO_Pin_7,sbit);
                break;
        case 5:
                GPIO_WriteBit(GPIOB,GPIO_Pin_0,sbit);
                break;
        case 6:
                GPIO_WriteBit(GPIOB,GPIO_Pin_1,sbit);
                break;
        case 7:
                GPIO_WriteBit(GPIOB,GPIO_Pin_6,sbit);
                break;
        case 8:
                   GPIO_WriteBit(GPIOB,GPIO_Pin_7,sbit);
                break;
        case 10:        case 9:
                GPIO_WriteBit(GPIOB,GPIO_Pin_8,sbit);
                break;

                GPIO_WriteBit(GPIOB,GPIO_Pin_9,sbit);
                break;
        case 11:
                GPIO_WriteBit(GPIOB,GPIO_Pin_10,sbit);
                break;
        case 12:
                   GPIO_WriteBit(GPIOB,GPIO_Pin_11,sbit);
                break;
        case 13:
                GPIO_WriteBit(GPIOB,GPIO_Pin_12,sbit);
                break;
        case 14:
                GPIO_WriteBit(GPIOB,GPIO_Pin_13,sbit);
                break;
        case 15:
                GPIO_WriteBit(GPIOB,GPIO_Pin_14,sbit);
                break;
        case 16:
          GPIO_WriteBit(GPIOB,GPIO_Pin_15,sbit);
                break;
        case 17:
          GPIO_WriteBit(GPIOA,GPIO_Pin_8,sbit);
                if(sbit) srdX.error_code &=0xBF;
                break;
        case 18:
                GPIO_WriteBit(GPIOA,GPIO_Pin_9,sbit);
                if(sbit) srdY.error_code &=0xBF;
                break;                                
        }
}


比如我现在VB中发送到下位机 执行 RegSetIO 9, 1
然后对应下位机         case 9:
                GPIO_WriteBit(GPIOB,GPIO_Pin_8,sbit);
                break;
得到PB8端口输出的发光二极管被点亮
反之执行 RegSetIO 9, 0
发光二极管熄灭

我要是把Public Const SetIO = &HC1改成  Public Const SetIO = &HC9或是其他任意值
就得不到上述的结果
这个程序是以前的前辈留下来
我现在的疑问是上位机发送一个指令,在下位机收到后
是怎么执行的(控制发光二极管的亮或灭)
小弟是新手,刚刚接触,搞了好多天,望您指教,多谢多谢!着急啊,闷了好久
此帖出自stm32/stm8论坛
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表