97 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			97 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
| 
 | ||
| #include "base/base.h"
 | ||
| #include "base/check_cfg.h"
 | ||
| #include "base/mycfg.h"
 | ||
| #include "prot/prot_m4.h"
 | ||
| #include "prot/prot_pc.h"
 | ||
| #include "base/beep.h"
 | ||
| #include "prot_cmd/cmd_coder.h"
 | ||
| #include "elec/coder_lib.h"
 | ||
| #include "elec/elec_judge.h"
 | ||
| 
 | ||
| 
 | ||
| typedef struct{
 | ||
|   int key_pressed;
 | ||
|   int ke1_pressed;
 | ||
| }self_def;
 | ||
| 
 | ||
| 
 | ||
| static self_def g_self;
 | ||
| 
 | ||
| 
 | ||
| static int docmd_ke1();
 | ||
| 
 | ||
| 
 | ||
| 
 | ||
| void cmd_m4_init()
 | ||
| {
 | ||
|   prot_m4 *m4=protM4();
 | ||
|   beep *beep_=Beep();
 | ||
|   mycfg *cfg_=syscfg();
 | ||
|   m4->set_irq_fun([=](myarray data){
 | ||
|     ProtPc *pc=protPc();
 | ||
|     g_self.key_pressed=1;
 | ||
|     qDebug("key press");
 | ||
|     pc->send_data_slot(0x37,myarray(1,char(0)));
 | ||
|   },"key press");
 | ||
|   m4->set_irq_fun([=](myarray data){
 | ||
|     g_self.key_pressed=0;
 | ||
|     qDebug("key up");
 | ||
|   },"key up");
 | ||
|   m4->set_irq_fun([=](myarray data){
 | ||
|     g_self.ke1_pressed=1;
 | ||
|     beep_->set_state(true);
 | ||
|     qDebug("ke1 press");
 | ||
|   },"ke1 press");
 | ||
|   m4->set_irq_fun([=](myarray data){
 | ||
|     g_self.ke1_pressed=0;
 | ||
|     beep_->set_state(false);
 | ||
|     qDebug("ke1 up");
 | ||
|     docmd_ke1();
 | ||
|   },"ke1 up");
 | ||
| //  m4->set_irq_fun([=](myarray data){
 | ||
| //    ProtPc *pc=protPc();
 | ||
| //    qDebug("send 0x37 to pc");
 | ||
| //    pc->send_data_slot(0x37,myarray(1,char(0)));
 | ||
| //  },"key press");
 | ||
| }
 | ||
| 
 | ||
| // 返回1则按键已按下
 | ||
| int cmd_m4_key_pressed()
 | ||
| {
 | ||
|   if(g_self.key_pressed){
 | ||
|     return 1;
 | ||
|   }else{
 | ||
|     return 0;
 | ||
|   }
 | ||
| }
 | ||
| 
 | ||
| 
 | ||
| 
 | ||
| static int docmd_ke1(){
 | ||
|   /*
 | ||
|     赋码仪按键按下时,如果是赋码仪一体机,则发送请求赋码命令0x8b
 | ||
|     按键加上300ms屏蔽
 | ||
|     赋码仪按键按下,直接开始检测
 | ||
|     
 | ||
|   */
 | ||
|   ProtPc *pc=protPc();
 | ||
|   mycfg *cfg_=syscfg();
 | ||
|   check_cfg *ccfg_=check_plan();
 | ||
|   if(cfg_->device_type=="inte_coder"){
 | ||
|     int chip=elec_extract_chip(ccfg_->get_plan_id());
 | ||
|     QByteArray r;
 | ||
|     r.append(char(chip));
 | ||
|     qInfo("key1 press:send cmd 0x8b.");
 | ||
|    pc->send_data_slot(0x8b,r);
 | ||
|   }else{
 | ||
|     char data[]={10,0};
 | ||
|     qInfo("key1 press:start check.");
 | ||
|     pc->docmd(0xe0,myarray(data,2));
 | ||
|   }
 | ||
|   return 0;
 | ||
| }
 | ||
| 
 | ||
| 
 | ||
| 
 | 
