7208|18

62

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

新接触到的问题(暂时无头绪。。。) [复制链接]

前段时间,我用Keil编写了一个密码键盘的程序,并利用伟福仿真器将程序烧进单片机内(我自己制作的一个密码键盘的板子)。但是老师现在要我用VC6.0作一个虚拟键盘的界面,想实现的功能是:我在硬件上按下按键,虚拟键盘上相应的按键有一定的反应,并在这个界面上显示出我所按下的键码。

我现在会利用MFC做一点简单的界面,但是我现在要用Keil中写的程序+硬件+VC6.0的界面,相当于是2个软件和一个硬件的融合吧,我应该怎么做呢?请教各位大师啊!

最新回复

恩  好的  谢谢啦~~~  详情 回复 发表于 2010-4-29 17:29
点赞 关注

回复
举报

80

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
用串口应该比较简单实现
单片机 <-> 串口 <-> PC

稍微高级一点就用USB,做个USB键盘
 
 

回复

57

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
各模块分开考虑
1。硬件键盘如何传键盘数据给PC
如楼上通过串口挺好,不用费心新的驱动
2。串口通信内容
自己订一个来回传的格式,协议,能来回送自己要的数据就行,随便定
3。VC显示虚拟键盘时,除了收PC键盘外,同时
  接受你的硬件键盘数据--〉解出是哪个键--〉送对应的PC键码给Windows--〉就是把你的键盘的信息让Windows当成是PC来的--〉不管键是从PC还是硬件键盘来的,收到输入字符,动画一下你的屏幕键盘
 
 
 

回复

82

帖子

0

TA的资源

一粒金砂(初级)

4
 
引用 2 楼 toborac 的回复:
各模块分开考虑
1。硬件键盘如何传键盘数据给PC
如楼上通过串口挺好,不用费心新的驱动
2。串口通信内容
自己订一个来回传的格式,协议,能来回送自己要的数据就行,随便定
3。VC显示虚拟键盘时,除了收PC键盘外,同时
  接受你的硬件键盘数据--〉解出是哪个键--〉送对应的PC键码给Windows--〉就是把你的键盘的信息让Windows当成是PC来的--〉不管键是从PC还是硬件键盘来……

就这样就可以,传输的数据不要用明码,加密一下比较好!
 
 
 

回复

64

帖子

0

TA的资源

一粒金砂(初级)

5
 
引用 3 楼 galle 的回复:
引用 2 楼 toborac 的回复:
各模块分开考虑
1。硬件键盘如何传键盘数据给PC
如楼上通过串口挺好,不用费心新的驱动
2。串口通信内容
自己订一个来回传的格式,协议,能来回送自己要的数据就行,随便定
3。VC显示虚拟键盘时,除了收PC键盘外,同时
接受你的硬件键盘数据--〉解出是哪个键--〉送对应的PC键码给Windows--〉就是把你的键盘的信息让Windows当成是PC……


楼上的同志们 都说得很清楚,分块设计与实现。
 
 
 

回复

69

帖子

0

TA的资源

一粒金砂(初级)

6
 
同意二楼的
至于加不加密无所谓了
 
 
 

回复

64

帖子

0

TA的资源

一粒金砂(初级)

7
 
先用串口调试助手,编写下位机程序并实现向PC正确发送按键数据,然后编写上位机程序接收数据并显示。
 
 
 

回复

69

帖子

0

TA的资源

一粒金砂(初级)

8
 
用串口是简单点,但是楼主要求加密啊
 
 
 

回复

71

帖子

0

TA的资源

一粒金砂(初级)

9
 
楼上的都是好方法
 
 
 

回复

72

帖子

0

TA的资源

一粒金砂(初级)

10
 
引用 2 楼 toborac 的回复:
各模块分开考虑
1。硬件键盘如何传键盘数据给PC
如楼上通过串口挺好,不用费心新的驱动
2。串口通信内容
自己订一个来回传的格式,协议,能来回送自己要的数据就行,随便定
3。VC显示虚拟键盘时,除了收PC键盘外,同时
  接受你的硬件键盘数据--〉解出是哪个键--〉送对应的PC键码给Windows--〉就是把你的键盘的信息让Windows当成是PC来的--〉不管键是从PC还是硬件键盘来……


请问下你能加我下QQ吗?  我有一些东西向请教一下你。。。我的QQ是50460401
 
 
 

回复

74

帖子

0

TA的资源

一粒金砂(初级)

11
 
引用 2 楼 toborac 的回复:
各模块分开考虑
1。硬件键盘如何传键盘数据给PC
如楼上通过串口挺好,不用费心新的驱动
2。串口通信内容
自己订一个来回传的格式,协议,能来回送自己要的数据就行,随便定
3。VC显示虚拟键盘时,除了收PC键盘外,同时
  接受你的硬件键盘数据--〉解出是哪个键--〉送对应的PC键码给Windows--〉就是把你的键盘的信息让Windows当成是PC来的--〉不管键是从PC还是硬件键盘来……


你前面说的,我都做完了,我用串口调试助手可以收到我的硬件键盘的键值了。但是我想请教一下,在MFC的虚拟键盘上模拟,要怎么实现么?没弄过这方面的东西。
 
 
 

回复

79

帖子

0

TA的资源

一粒金砂(初级)

12
 
引用 10 楼 kusheng176 的回复:
你前面说的,我都做完了,我用串口调试助手可以收到我的硬件键盘的键值了。但是我想请教一下,在MFC的虚拟键盘上模拟,要怎么实现么?没弄过这方面的东西。


"MFC的虚拟键盘"指的是什么?一些button控件吗?
 
 
 

回复

76

帖子

0

TA的资源

一粒金砂(初级)

13
 
引用 11 楼 jiqiang01234 的回复:
引用 10 楼 kusheng176 的回复:
你前面说的,我都做完了,我用串口调试助手可以收到我的硬件键盘的键值了。但是我想请教一下,在MFC的虚拟键盘上模拟,要怎么实现么?没弄过这方面的东西。


"MFC的虚拟键盘"指的是什么?一些button控件吗?


就是我用MFC做了一个虚拟键盘,用来模仿我做的硬件键盘的,想实现的功能是:硬件上按下按键,虚拟键盘上相应的按键有一定的反应,并在这个MFC上显示出我所按下的键码。
我已经检测到单片机能发送正确的数据到PC机了(在串口调试助手上看到的),我想问一下,要怎么在MFC中响应?是不是要用到MScomm控件么?
 
 
 

回复

80

帖子

0

TA的资源

一粒金砂(初级)

14
 
引用 12 楼 kusheng176 的回复:
就是我用MFC做了一个虚拟键盘,用来模仿我做的硬件键盘的,想实现的功能是:硬件上按下按键,虚拟键盘上相应的按键有一定的反应,并在这个MFC上显示出我所按下的键码。
我已经检测到单片机能发送正确的数据到PC机了(在串口调试助手上看到的),我想问一下,要怎么在MFC中响应?是不是要用到MScomm控件么?

我的意思是,你所谓的“虚拟键盘”的界面是什么?button控件?贴图?还是GDI直接画的?
可以用MScomm控件和串口通讯,当然也不是唯一手段。还可以直接用api,也可以用别人封装的类。比如CSerial类等等。
如果用MScomm控件,就会有接收到串口数据的响应函数,在里面实现你所需的功能即可。
 
 
 

回复

80

帖子

0

TA的资源

一粒金砂(初级)

15
 
引用 13 楼 jiqiang01234 的回复:
引用 12 楼 kusheng176 的回复:
就是我用MFC做了一个虚拟键盘,用来模仿我做的硬件键盘的,想实现的功能是:硬件上按下按键,虚拟键盘上相应的按键有一定的反应,并在这个MFC上显示出我所按下的键码。
我已经检测到单片机能发送正确的数据到PC机了(在串口调试助手上看到的),我想问一下,要怎么在MFC中响应?是不是要用到MScomm控件么?

我的意思是,你所谓的“虚拟键盘”的界面……


我的虚拟键盘就是一些BUTTON控件。当PC机接收到我发送的数据时,利用MScomm,来写响应代码就行了?
 
 
 

回复

67

帖子

0

TA的资源

一粒金砂(初级)

16
 
引用 14 楼 kusheng176 的回复:
我的虚拟键盘就是一些BUTTON控件。当PC机接收到我发送的数据时,利用MScomm,来写响应代码就行了?

直接在接收响应里写东西就行了,就像单片机中的串口中断中写一样。
 
 
 

回复

68

帖子

0

TA的资源

一粒金砂(初级)

17
 
引用 15 楼 jiqiang01234 的回复:
引用 14 楼 kusheng176 的回复:
我的虚拟键盘就是一些BUTTON控件。当PC机接收到我发送的数据时,利用MScomm,来写响应代码就行了?
直接在接收响应里写东西就行了,就像单片机中的串口中断中写一样。


我还想请问一下,我在接收框里怎么才能显示我按键输入的数字呢?我对于MSCOMM还是不太熟,网上的概念都比较浅。。。我按照下面的代码去实现,接收框出来的是乱码

void CScommTestDlg::OnComm()
{
     VARIANT variant_inp;
     COleSafeArray safearray_inp ;
     LONG len,k ;
     BYTE rxdata [2048] ; //设置BYTE 数组An 8 - bit integerthat is not signed.
     CString strtemp ;
     if (m_ctrlComm. GetCommEvent()==2)// 事件值为2 表示接收缓冲区内有字符
         { ///// 以下可以根据自己的通信协议加入处理代码
         variant_inp = m_ctrlComm. GetInput () ; // 读缓冲区
         safearray_inp = variant_inp ; // VARIANT型变量转换为ColeSafeArray 型变量
         len = safearray_inp. GetOneDimSize () ; // 得到有效数据长度
         for(k=0;k                 safearray_inp. GetElement ( &k,rxdata+k) ;   // 转换为BYTE 型数组
        for (k=0;k          {
             BYTE bt=*(char * ) (rxdata+k) ; // 字符型
               strtemp.Format ("%d",bt);//将字符送入临时变量strtemp存放
              m_strRXData+=strtemp ; //加入接收编辑框对应字符串
         }
         }
 
 
 

回复

82

帖子

0

TA的资源

一粒金砂(初级)

18
 
mscomm控件只管接收和发送串口数据,与数据是如何显示的没有关系。你所说的“接收框”是指edit控件吧?那就直接看msdn里面CEdit控件的使用。注意:一旦涉及到MFC的编程就得按着人家的一套行为方式来。建议楼主看一下孙鑫的vc视频教程补充一下MFC程序的基础知识,保证看过后可以上手了。
 
 
 

回复

70

帖子

0

TA的资源

一粒金砂(初级)

19
 
引用 17 楼 jiqiang01234 的回复:
mscomm控件只管接收和发送串口数据,与数据是如何显示的没有关系。你所说的“接收框”是指edit控件吧?那就直接看msdn里面CEdit控件的使用。注意:一旦涉及到MFC的编程就得按着人家的一套行为方式来。建议楼主看一下孙鑫的vc视频教程补充一下MFC程序的基础知识,保证看过后可以上手了。


恩  好的  谢谢啦~~~
 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

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

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

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

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

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

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