请问有没有人做过51单片机控制PS/2口条形码扫描器的?

2020-02-02 09:17发布

新手一个,请教如何通过PS/2口来接受条形码扫描的信息?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
13条回答
zzzhangxiang
1楼-- · 2020-02-02 13:30
各位大神给点反应啊!!
liujinhan
2楼-- · 2020-02-02 14:30
 精彩回答 2  元偷偷看……
zzzhangxiang
3楼-- · 2020-02-02 20:16
liujinhan 发表于 2012-8-11 22:58
可以实现,和键盘一样的。

刚上电时会发个检测码。

键盘解码一次只是一个字符,但怎么获得扫描器扫描的一串字符呢?

你有没有跟条形扫描器解码相关的c51代码呢?网上基本是键盘跟鼠标的。。。。。
liujinhan
4楼-- · 2020-02-02 23:21
连续解码,不就是一串字符了吗?

扫描枪扫描的速度很快,定义200ms内连续解码。200ms到了,就说明一次扫码完成。

//以下是STM32的程序,改改 51也能用。

void EXTI2_IT_Handle(void)
{
       
        if(EXTI_GetITStatus(EXTI_Line2) != RESET)                                  //判断中断发生来源
          {
                   //EXTI_ClearITPendingBit(EXTI_Line2);    //清除中断标志

                //GPIO_ResetBits(GPIOE,GPIO_Pin_15);        //for debug
               
                #if 1
                PS2CntBusy=PS2_TimeOUT;         // 定时器会将此变量每1ms减1,等于0后通知主程序处理数据
               
                if((IntNum > 0) && (IntNum < 9))
                   {
                        KeyV = KeyV >> 1;                //因键盘数据是低>>高,结合上一句所以右移一位
                        if (Key_Data==1)
                            KeyV = KeyV | 0x80;          //当键盘数据线为1时到最高位
                }
                IntNum++;
               
                //while (!Key_CLK);                //等待PS/2CLK拉高
                while (Key_CLK==0);                //等待PS/2CLK拉高NG if add delayus
                //{
                //        Delay_us(cnt++);
                //        if(cnt>=1000)        break;
                //}
               
                if (IntNum > 10)
                {
                        IntNum = 0;                  //当中断11次后表示一帧数据收完,清变量准备下一次接收

                        PS2_buf[PS2_cnt]=KeyV;                 // 存放到PS2的接收缓冲区去
                           PS2_cnt++;                                     // 指针调整
                           if(PS2_cnt>=100)
                        PS2_cnt=100;       
                        //EA = 0;                      //关中断等显示完后再开中断
                }
                #endif
               
                /* Clear the Key Button EXTI line pending bit */
                    EXTI_ClearITPendingBit(EXTI_Line2);
        }

       
}
zzzhangxiang
5楼-- · 2020-02-03 00:15
好的,谢谢啦
gaoyichuan000
6楼-- · 2020-02-03 03:29
前几天看到一个帖子 你找找看吧

一周热门 更多>