⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sk.c

📁 本程序在S3C44B0 uClinux的嵌入式GUI
💻 C
📖 第 1 页 / 共 5 页
字号:
}//---------------------------------------------------------------------------//清除Eeprom 全部内容//ESC,CMD81,SUB10,LEN=5,CheckSum//ESC,CMD81,SUB10,LEN=6,err,CheckSumint EraseEeprom(void){  int err;  unsigned char erese_eeprom_command[] = {0x1b,0x81,0x10,5,0,0};  unsigned char return_buf[20];  memset(return_buf,0x0,20);  err = SendCommand(erese_eeprom_command,erese_eeprom_command[3],return_buf);  //接收数据  if(err || return_buf[4])  { if(err)  return err;    else     return return_buf[4];  }  return err;}//---------------------------------------------------------------------------// 税控卡--用户卡 注册   int TB_TaxInit( void );//ESC,CMD81,SUB82,LEN=5,CheckSum//ESC,CMD81,SUB82,LEN=6,err,CheckSum ->0:初始化成功; !=0:见错误表//税控初始化命令int TaxCtrInitCommand(void){  int err;  unsigned char tax_ctr_init_command[10] = {0x1b,0x81,0x82,5,0,0};  unsigned char return_buf[20];  err = SendCommand(tax_ctr_init_command,tax_ctr_init_command[3],return_buf);  //接收数据  if(err || return_buf[4])  { if(err)  return err;    else     return return_buf[4];  }    return err;}//---------------------------------------------------------------------------//(cpu)分发发票号   DISTRIBUTE_INVOICE_NB//ESC,CMD81,SUB83,LEN=5,CheckSum//ESC,CMD81,SUB83,LEN=6,err,CheckSum ->0:成功; !=0:见错误表int YHDistributeBillNo(void){   int err=0;  unsigned char distribute_billNo_command[] = {0x1b,0x81,0x83,5,0,0};  unsigned char return_buf[20];  memset(return_buf,0x0,20);  err = SendCommand(distribute_billNo_command,distribute_billNo_command[3],return_buf);  //接收数据  if(err || return_buf[4])  { if(err)  return err;    else     return return_buf[4];  }  return err;}//---------------------------------------------------------------------------//(sam)录入发票号  INPUT_INVOICE_NB 数据从#define FlashNowBillRollUseInfo_11Add读出(22)//ESC,CMD81,SUB84,LEN=5,CheckSum//ESC,CMD81,SUB84,LEN=6,err,CheckSum ->0:成功; !=0:见错误表int SKRegisterBillNo(void){            int err;  unsigned char register_billNo_command[] = {0x1b,0x81,0x84,5,0,0};  unsigned char return_buf[20];  err = SendCommand(register_billNo_command,register_billNo_command[3],return_buf);  //接收数据  if(err || return_buf[4])  { if(err)  return err;    else     return return_buf[4];  }  return err;}//---------------------------------------------------------------------------//(sam)开票  ISSUE_INVOICE命令用于生成发票税控码//ESC,CMD81,SUB85,LEN=5,CheckSum//ESC,CMD81,SUB85,LEN=6,err,CheckSum ->0:成功; !=0:见错误表int MakeOutOnInvoice(void){   int err;  char make_out_an_invoice_command[] = {0x1b,0x81,0x85,5,0,0};  char return_buf[100];  memset(return_buf,0x0,100);  err = SendCommand(make_out_an_invoice_command,make_out_an_invoice_command[3],return_buf);  if(err || return_buf[4])  { if(err)  return err;    else     return return_buf[4];  }  memmove(prevent_forge_code,&return_buf[5],8);  return err;}//---------------------------------------------------------------------------//(sam)日汇  //pro_flg=0->日交易累计记录签名,=1->其他数据签名  //dat_addr->(pro_flg==0时:指向 日交易数据),(pro_flg==1时:指向其他数据签名区)//ESC,CMD81,SUB86,LEN=5,CheckSum//ESC,CMD81,SUB86,LEN=6,err,CheckSum ->0:成功; !=0:见错误表//"日汇"操作过程: 1.)先将'pro_flg(1个字节)、日汇总数据Flash存储地址(4个字节)'写入Eeprom的EepromAdd_15//                2.)再发送日汇总命令int DayCollect(unsigned char proFlag,int daySellDataAddress){  unsigned char day_collect_file_command[20] = {0x1b,0x81,0x86,5,0,0};  unsigned char tmp_buf[100];            int err;  memset(tmp_buf,0x0,100);  tmp_buf[0] = proFlag;   //日交易累计记录签名标志  memmove(&tmp_buf[1],(unsigned char *)&daySellDataAddress,4); //日汇总数据Flash存储地址  err = WriteEeprom(EepromAdd_15,5,tmp_buf);  if(err)  return err;  err = SendCommand(day_collect_file_command,day_collect_file_command[3],tmp_buf);  //接收数据  if(err || tmp_buf[4])  { if(err)  return err;    else     return tmp_buf[4];  }  return err;}//---------------------------------------------------------------------------//(sam)生成申报数据  DECLARE_DUTY 命令用于生成申报数据//ESC,CMD81,SUB87,LEN=5,CheckSum//ESC,CMD81,SUB87,LEN=6,err,CheckSum ->0:成功; !=0:见错误表//功能:谁控卡口令验证int SKCardDeclare(void){   int err=0;  unsigned char SKcard_declare_command[] = {0x1b,0x81,0x87,5,0,0};  unsigned char return_buf[20];  memset(return_buf,0x0,20);  err = SendCommand(SKcard_declare_command,SKcard_declare_command[3],return_buf);  //接收数据  if(err || return_buf[4])  { if(err)  return err;    else     return return_buf[4];  }  return err;}//---------------------------------------------------------------------------//(cpu)汇总申报数据  DATA_COLLECT//ESC,CMD81,SUB88,LEN=5,CheckSum//ESC,CMD81,SUB88,LEN=6,err,CheckSum ->0:成功; !=0:见错误表int YHCardDeclareCollect(void){   int err=0;  unsigned char YHCard_declare_collect_command[] = {0x1b,0x81,0x88,5,0,0};  unsigned char return_buf[20];  memset(return_buf,0x0,20);  err = SendCommand(YHCard_declare_collect_command,YHCard_declare_collect_command[3],return_buf);  //接收数据  if(err || return_buf[4])  { if(err)  return err;    else     return return_buf[4];  }  usleep(500);  return err;}//---------------------------------------------------------------------------//0x89                (必须在税控初始化之后才允许进行) -> 卡 复位!!!// sam 卡口令验证//ESC,CMD81,SUB89,LEN=5,CheckSum//ESC,CMD81,SUB89,LEN=6,err,CheckSum ->0:成功; !=0:见错误表//功能:税控卡口令验证int SKCardPasswordValidate(void){            int err=0;  unsigned char sk_password_validate_command[] = {0x1b,0x81,0x89,5,0,0};  unsigned char return_buf[20];  memset(return_buf,0x0,20);  err = SendCommand(sk_password_validate_command,sk_password_validate_command[3],return_buf);  //接收数据  if(err || return_buf[4])  { if(err)  return err;    else     return return_buf[4];  }  return err;}//---------------------------------------------------------------------------//0x8A    (必须在税控初始化之后才允许进行) -> 卡 复位!!//(cpu)验证口令  VERIFY命令用于校验命令数据域的PIN的正确性。//ESC,CMD81,SUB8A,LEN=5,CheckSum//ESC,CMD81,SUB8A,LEN=6,err,CheckSum ->0:成功; !=0:见错误表//功能:用户卡口令验证int YHCardPasswordValidate(void){   int err=0;  unsigned char yh_password_validate_command[] = {0x1b,0x81,0x8a,5,0,0};  unsigned char return_buf[20];  memset(return_buf,0x0,20);  err = SendCommand(yh_password_validate_command,yh_password_validate_command[3],return_buf);  //接收数据  if(err || return_buf[4])  { if(err)  return err;    else     return return_buf[4];  }  usleep(100);  return err;}//---------------------------------------------------------------------------//卡 复位 char SAMorCPU  =0->(税控卡)SAM卡,=1->(用户卡)CPU卡,=2->(税务管理卡)CPU卡//ESC,CMD81,SUB8B,LEN=6,SAMorCPU,CheckSum//ESC,CMD81,SUB8B,LEN=6,err,CheckSum ->0:成功; !=0:见错误表int CardReseat(unsigned char cardType){  int err=0;  unsigned char card_reseat_command[20] = {0x1b,0x81,0x8b,6,0,0,0};  unsigned char return_buf[200];  memset(return_buf,0x0,20);  err = SendCommand(card_reseat_command,card_reseat_command[3],return_buf);  //接收数据  if(err || return_buf[4])  { if(err)  return err;    else     return return_buf[4];  }  usleep(800);  return err;}//---------------------------------------------------------------------------//(sam)读监控信息文件密文//ESC,CMD81,SUB8C,LEN=5,CheckSum//ESC,CMD81,SUB8C,LEN=6,err,CheckSum ->0:成功; !=0:见错误表int ReadVigilFileToFlash(void){   int err=0;  unsigned char read_vigil_file_command[] = {0x1b,0x81,0x8c,5,0,0};  unsigned char return_buf[20];  memset(return_buf,0x0,20);  err = SendCommand(read_vigil_file_command,read_vigil_file_command[3],return_buf);  //接收数据  if(err || return_buf[4])  { if(err)  return err;    else     return return_buf[4];  }  usleep(500);    return err;}//---------------------------------------------------------------------------//(sam)更新监控数据 UPDATE_CONTROLS//ESC,CMD81,SUB8D,LEN=5,CheckSum//ESC,CMD81,SUB8D,LEN=6,err,CheckSum ->0:成功; !=0:见错误表int UpdateVigilFile(void){  int err=0;  unsigned char update_vigil_file_command[] = {0x1b,0x81,0x8d,5,0,0};  unsigned char return_buf[20];  memset(return_buf,0x0,20);  err = SendCommand(update_vigil_file_command,update_vigil_file_command[3],return_buf);  //接收数据  if(err || return_buf[4])  { if(err)  return err;    else     return return_buf[4];  }  usleep(800);  return err;}//---------------------------------------------------------------------------//读 二进制文件//ESC,CMD81,SUB8E,LEN=5,CheckSum//ESC,CMD81,SUB8E,LEN=6,err,CheckSum ->0:成功; !=0:见错误表//读文件操作过程: 1.)先将以下五项 大/小卡、文件ID、所读文件内部的偏移地址、长度、写入地址 写入Eeprom的EepromAdd_15//                2.)再发送读文件命令//          参数: 大/小卡(char)、文件ID(char)、所读文件内部的偏移地址(char)、长度(char)、写入地址(long)//      char SAMorCPU =0x12->大卡用户卡或管理卡(此处的大卡是用户卡还是管理卡自己判断)  =0x13->小卡税控卡//        char FileID 文件号//        char Offset 所读文件内部的偏移地址//           char Len 读出长度(从地址0读)// long write_address 读出内容写入的地址(FLASH ROM)int ReadTaxFile(unsigned char cardType,unsigned char fileId,unsigned char fileOffset,unsigned char fileLength,int writeAddress){   int err=0;  unsigned char read_tax_file_command[20] = {0x1b,0x81,0x8e,5,0,0};  unsigned char tmp_buf[10];  unsigned char return_buf[200];  //参数: 大/小卡(char)、文件ID(char)、所读文件内部的偏移地址(char)、长度(char)、写入地址(long)  //char SAMorCPU  =0x12->大卡用户卡或管理卡(此处的大卡是用户卡还是管理卡自己判断)  =0x13->小卡税控卡  //char FileID    文件号  //char Offset    所读文件内部的偏移地址  //char Len       读出长度(从地址0读)  //long write_address 读出内容写入的地址(FLASH ROM)  memset(tmp_buf,0x0,10);  tmp_buf[0] = cardType;   //卡类型  tmp_buf[1] = fileId;     //文件编号  tmp_buf[2] = fileOffset; //读文件偏移地址  tmp_buf[3] = fileLength; //文件长度  memmove(&tmp_buf[4],(unsigned char *)&writeAddress,4); //读数据起始地址  err = WriteEeprom(EepromAdd_15,8,tmp_buf);  if(err)  return err;  memset(return_buf,0x0,200);  err = SendCommand(read_tax_file_command,read_tax_file_command[3],return_buf);  //发送命令  if(err || return_buf[4])  { if(err)  return err;    else     return return_buf[4];  }  return err;}//---------------------------------------------------------------------------//身份认证:税务管理卡与被核查税控收款机的税控卡进行身份认证//ESC,CMD81,SUB8F,LEN=5,CheckSum//ESC,CMD81,SUB8F,LEN=6,err,CheckSum ->0:成功; !=0:见错误表int TQStatusAttestation(void){  int err=0;  unsigned char TQstatus_attestation_command[] = {0x1b,0x81,0x8f,5,0,0};  unsigned char return_buf[20];  memset(return_buf,0x0,20);  err = SendCommand(TQstatus_attestation_command,TQstatus_attestation_command[3],return_buf);  //发送命令  if(err || return_buf[4])  { if(err)  return err;    else     return return_buf[4];  }  return err;}//---------------------------------------------------------------------------//将 flash rom (FlashGLCardFile3Add)地址(len=233),处的稽查数据,写入核查文件(按记录)//ESC,CMD81,SUB90,LEN=5,CheckSum//ESC,CMD81,SUB90,LEN=6,err,CheckSum ->0:成功; !=0:见错误表 此处如果返回0xa0也正确 表明当前的管理卡已满需要更换管理卡int WriteTQCardCheckFile(void){  int err=0;  unsigned char write_TQCard_check_file_command[] = {0x1b,0x81,0x90,5,0,0};  unsigned char return_buf[20];  memset(return_buf,0x0,20);  err = SendCommand(write_TQCard_check_file_command,write_TQCard_check_file_command[3],return_buf);  //接收数据  if(err || return_buf[4])  { if(err)  return err;    else     return return_buf[4];  }    usleep(500);  return err;}//---------------------------------------------------------------------------//读 税种税目索引文件02,47/rec (200条记录)->FlashYHCardFile3Add//ESC,CMD81,SUB91,LEN=5,CheckSum//ESC,CMD81,SUB91,LEN=6,err,CheckSum ->0:成功; !=0:见错误表int ReadTaxkindFileToFlash(void){  int err=0;  unsigned char read_taxkind_file_command[] = {0x1b,0x81,0x91,5,0,0};  unsigned char return_buf[20];  memset(return_buf,0x0,20);  err = SendCommand(read_taxkind_file_command,read_taxkind_file_command[3],return_buf);  //接收数据  if(err || return_buf[4])  { if(err)  return err;    else     return return_buf[4];  }  usleep(500);  return err;}//---------------------------------------------------------------------------//读 定长记录文件//ESC,CMD92,SUB8E,LEN=5,CheckSum//ESC,CMD92,SUB8E,LEN=6,err,CheckSum ->0:成功; !=0:见错误表//读文件操作过程: 1.)先将以下五项 大/小卡、文件ID、记录编号(char)(必须从一开始)、长度、写入地址 写入Eeprom的EepromAdd_15//                2.)再发送读文件命令//参数: 大/小卡(char)、文件ID(char)、记录(char)、长度(char)、写入地址(long)//char SAMorCPU  =0x13->(税控卡)SAM卡,=0x12->(用户卡)CPU卡,=0x12->(税务管理卡)CPU卡//char FileID    文件号//char recNum    记录//char Len       读出长度//long WriteAddr 读出内容写入的地址(FLASH ROM)int ReadNoteFile(unsigned char cardType,unsigned char fileId,unsigned char fileNoteNumber,unsigned char fileLength,int writeAddress){   int err=0;  unsigned char read_note_file_command[20] = {0x1b,0x81,0x92,5,0,0};  unsigned char tmp_buf[10];  unsigned char return_buf[200];  memset(tmp_buf,0x0,10);  tmp_buf[0] = cardType;       //卡类型  tmp_buf[1] = fileId;         //文件编号  tmp_buf[2] = fileNoteNumber; //所读'文件纪录'的编号  tmp_buf[3] = fileLength;     //文件长度  memmove(&tmp_buf[4],(unsigned char *)&writeAddress,4); //读数据起始地址  err = WriteEeprom(EepromAdd_15,8,tmp_buf);  if(err) return err;  memset(return_buf,0x0,200);  err = SendCommand(read_note_file_command,read_note_file_command[3],return_buf);  //发送命令  if(err || return_buf[4])  { if(err)  return err;    else     return return_buf[4];  }

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -