📄 sk.c
字号:
return err;}//---------------------------------------------------------------------------//向用户卡 登记发票汇总联//ESC,CMD81,SUB93,LEN=5,CheckSum//ESC,CMD81,SUB93,LEN=6,err,CheckSum ->0:成功; !=0:见错误表int RegisterBillRollCollect(void){ int err=0; unsigned char register_bill_collect_command[] = {0x1b,0x81,0x93,5,0,0}; unsigned char return_buf[20]; memset(return_buf,0x0,20); err = SendCommand(register_bill_collect_command,register_bill_collect_command[3],return_buf); //接收数据 if(err || return_buf[4]) { if(err) return err; else return return_buf[4]; } usleep(500); return err;}//---------------------------------------------------------------------------//0x94 //按 发票打印日期 查找发票流水记录位置 CCYYMMDD //将 发票打印日期 存在 EepromAdd_15 //返回时:EepromAdd_4_2 参数返回区 (长度:16)->发票记录位置//ESC,CMD81,SUB94,LEN=5,CheckSum//ESC,CMD81,SUB94,LEN=6,err,CheckSum ->0:成功; !=0:见错误表//功能: 按 发票打印日期 查找发票流水记录位置//参数: lookupDate: 需要查找发票的使用日期 参数类型:4个字节BCD格式日期 "CCYYMMDD"//返回: =0:操作成功 !=0:见错误对照表int LookupBillDate(unsigned char *lookupDate) { int err=0; unsigned char bill_date_lookup_command[] = {0x1b,0x81,0x94,5,0,0}; unsigned char return_buf[20]; err = WriteEeprom(EepromAdd_15,4,lookupDate); //将 发票打印日期 存在 Eeprom_15 if(err) return err; err = SendCommand(bill_date_lookup_command,bill_date_lookup_command[3],return_buf); //接收数据 if(err || return_buf[4]) { if(err) return err; else return return_buf[4]; } usleep(500); return err;}//---------------------------------------------------------------------------//0x95 //按 按 发票号 查找发票流水记录位置 long 4 //将 发票号 存在 Eeprom_15 //返回时:EepromAdd_4_2 参数返回区 (长度:16)->发票记录位置//ESC,CMD81,SUB95,LEN=5,CheckSum//ESC,CMD81,SUB95,LEN=6,err,CheckSum ->0:成功; !=0:见错误表//功能: 按 发票号 查找发票流水记录位置//参数: lookupBillNumber: 查找发票的发票号 参数类型:4个字节长的十六进制数值//返回: =0:操作成功 !=0:见错误对照表int LookupBill(unsigned char *lookupBillNumber){ int err=0; unsigned char bill_lookup_command[] = {0x1b,0x81,0x95,5,0}; unsigned char return_buf[20]; err = WriteEeprom(EepromAdd_15,4,lookupBillNumber); //将 发票打印日期 存在 Eeprom_15 if(err) return err; err = SendCommand(bill_lookup_command,bill_lookup_command[3],return_buf); //接收数据 if(err || return_buf[4]) { if(err) return err; else return return_buf[4]; } usleep(500); return err;}//---------------------------------------------------------------------------//0x96 //按 纳税申报 年月 查找 纳税申报记录位置 CCYYMM //将 年月 存在 Eeprom_15 //返回时:EepromAdd_4_2 参数返回区 (长度:16)->纳税申报记录位置//ESC,CMD81,SUB96,LEN=5,CheckSum//ESC,CMD81,SUB96,LEN=6,err,CheckSum ->0:成功; !=0:见错误表//功能: 按 纳税申报 年月 查找 纳税申报记录位置 CCYYMM//参数: lookupDeclareDate: 查找报税信息的日期 类型: 3个字节BCD//返回: =0:操作成功 !=0:见错误对照表int LookupDeclare(unsigned char *lookupDeclareDate){ int err=0; unsigned char declare_lookup_command[] = {0x1b,0x81,0x96,5,0}; unsigned char return_buf[20]; err = WriteEeprom(EepromAdd_15,3,lookupDeclareDate); //将 年月 存在 Eeprom_15 if(err) return err; err = SendCommand(declare_lookup_command,declare_lookup_command[3],return_buf); //发送命令 if(err || return_buf[4]) { if(err) return err; else return return_buf[4]; } usleep(500); return err;}//---------------------------------------------------------------------------//0x97 //按 日期查找 日累计记录 位置 //将 日期 存在 Eeprom_15 CCYYMMDD //返回时:EepromAdd_4_2 参数返回区 (长度:16)->日累计记录位置//ESC,CMD81,SUB97,LEN=5,CheckSum//ESC,CMD81,SUB97,LEN=6,err,CheckSum ->0:成功; !=0:见错误表//功能: 按 日期查找 日累计记录 位置//参数: lookupDate: 查找日累计信息的日期 类型: 4个字节BCD//返回: =0:操作成功 !=0:见错误对照表int LookupDayAddup(unsigned char *lookupDate){ int err=0; unsigned char dayAddup_lookup_command[] = {0x1b,0x81,0x97,5,0}; unsigned char return_buf[20]; err = WriteEeprom(EepromAdd_15,4,lookupDate); //将 年月 存在 Eeprom_15 if(err) return err; err = SendCommand(dayAddup_lookup_command,dayAddup_lookup_command[3],return_buf); //接收数据 if(err || return_buf[4]) { if(err) return err; else return return_buf[4]; } usleep(500); return err;}//---------------------------------------------------------------------------//整理发票汇总数据//ESC,CMD81,SUB98,LEN=5,CheckSum//ESC,CMD81,SUB98,LEN=6,err,CheckSum ->0:成功; !=0:见错误表int CleanupBillRollCollectData(void){ int err=0; unsigned char Cleanup_bill_collect_command[] = {0x1b,0x81,0x98,5,0,0}; unsigned char return_buf[20]; memset(return_buf,0x0,20); err = SendCommand(Cleanup_bill_collect_command,Cleanup_bill_collect_command[3],return_buf); //接收数据 if(err || return_buf[4]) { if(err) return err; else return return_buf[4]; } return err;}//---------------------------------------------------------------------------//0x0E//保存eeprom->Flash_EepromSaveZone_1K//ESC,CMD81,SUB0E,LEN=5,CheckSum//ESC,CMD81,SUB0E,LEN=6,err,CheckSum ->0:成功; !=0:见错误表int BackEepromToFlash(void){ int err=0; unsigned char back_eeprom_command[] = {0x1b,0x81,0x0e,5,0,0}; unsigned char return_buf[20]; err = SendCommand(back_eeprom_command,back_eeprom_command[3],return_buf); //接收数据 if(err || return_buf[4]) { if(err) return err; else return return_buf[4]; } usleep(500); return err;}//---------------------------------------------------------------------------//恢复eeprom<-Flash_EepromSaveZone_1K//ESC,CMD81,SUB0F,LEN=5,CheckSum//ESC,CMD81,SUB0F,LEN=6,err,CheckSum ->0:成功; !=0:见错误表int ResumeEepromData(void){ int err=0; unsigned char Resum_eeprom_data_command[] = {0x1b,0x81,0x0f,5,0,0}; unsigned char return_buf[20]; err = SendCommand(Resum_eeprom_data_command,Resum_eeprom_data_command[3],return_buf); //接收数据 if(err || return_buf[4]) { if(err) return err; else return return_buf[4]; } usleep(500); return err;}//---------------------------------------------------------------------------//写7年日累计日期//ESC,CMD81,SUB99,LEN=5,CheckSum//ESC,CMD81,SUB99,LEN=6,err,CheckSum ->0:成功; !=0:见错误表int WriteSeverYearDate(void){ int err=0; unsigned char command[] = {0x1b,0x81,0x99,5,0,0}; unsigned char return_buf[20]; err = SendCommand(command,command[3],return_buf); //接收数据 if(err || return_buf[4]) { if(err) return err; else return return_buf[4]; } usleep(500); return err;}//---------------------------------------------------------------------------//'SM'卡解锁//ESC,CMD81,SUB0F9a,LEN=5,CheckSum//ESC,CMD81,SUB0F,LEN=6,err,CheckSum ->0:成功; !=0:见错误表int SMCardDisentangleBlank(void){ int err=0; unsigned char command[] = {0x1b,0x81,0x9a,5,0,0}; unsigned char return_buf[20]; err = SendCommand(command,command[3],return_buf); //发送命令 if(err || return_buf[4]) { if(err) return err; else return return_buf[4]; } usleep(500); return err;}//---------------------------------------------------------------------------//一张管理卡不能稽查完数据时 插入后续的管理卡//ESC,CMD81,SUB0F9b,LEN=5,CheckSum//ESC,CMD81,SUB0F,LEN=6,err,CheckSum ->0:成功; !=0:见错误表int GLCardBackCard(void){ int err=0; unsigned char command[] = {0x1b,0x81,0x9b,5,0,0}; unsigned char return_buf[20]; err = SendCommand(command,command[3],return_buf); //发送命令 if(err || return_buf[4]) { if(err) return err; else return return_buf[4]; } usleep(500); return err;}//---------------------------------------------------------------------------//2004-04-02 sm add 以下为税控测试准备新加//===========================================================================//税务管理卡口令验证(先将税务管理卡口令保存在 EepromAdd_16 中)//ESC,CMD81,SUBA0,LEN=5,CheckSum//ESC,CMD81,SUBA0,LEN=6,err,CheckSum ->0:成功; !=0:见错误表//功能: 税务管理卡口令验证int GLCardPasswordValidate(void){ int err; char command[] = {0x1b,0x81,0xa0,5,0,0}; char return_buf[20]; err = SendCommand(command,command[3],return_buf); if(err || return_buf[4]) { if(err) return err; else return return_buf[4]; } usleep(500); return err;}//===========================================================================//ESC,CMD81,SUBA1,LEN=5,CheckSum//ESC,CMD81,SUBA1,LEN=6,ChkLevel,ChecSum ->ChkLevel==01--FF:成功; ChkLevel==0:错误//功能: 读出税务管理卡核查级别//注意: 此命令返回值和其它命令不同!!!int ReadGLCardLevel(unsigned char *GL_level){ int err; char command[] = {0x1b,0x81,0xa1,5,0,0}; char return_buf[20]; err = SendCommand(command,command[3],return_buf); if(!err) *GL_level = return_buf[4]; //管理卡核查级别 usleep(500); return err;}//===========================================================================//ESC,CMD81,SUBA2,LEN=5,CheckSum//ESC,CMD81,SUBA2,LEN=6,err,CheckSum ->0:成功; !=0:见错误表//功能: 读出用户卡基本信息文件(用于改名)int ReadYHCardBaseInfoFile(void){ int err; char command[] = {0x1b,0x81,0xa2,5,0,0}; char return_buf[20]; err = SendCommand(command,command[3],return_buf); if(err || return_buf[4]) { if(err) return err; else return return_buf[4]; } usleep(500); return err;}//===========================================================================//稽查时自动调整稽查条数 (先将税务管理卡稽查参数保存在 FlashromAdd_17 中,格式同0x9b:继续 写 税务管理卡)//ESC,CMD81,SUBA3,LEN=5,CheckSum//ESC,CMD81,SUBA3,LEN=6,err,CheckSum ->0:成功; !=0:见错误表//根据实际记录条数,调整用户稽查参数 ( 在用户输入稽查参数后,实施稽查前调用 )//函数返回 -1-> 日期参数不正确( 日期小于起始日,或大于当前日 )int AdjustCheckingCount(void){ int err; char command[] = {0x1b,0x81,0xa3,5,0,0}; char return_buf[20]; err = SendCommand(command,command[3],return_buf); if(err || return_buf[4]) { if(err) return err; else return return_buf[4]; } usleep(500); return err;}//===========================================================================//按发票号:查询电子存根+发票流水//查询的发票号,预先存放在 EepromAdd_15 中//ESC,CMD81,SUBA4,LEN=5,CheckSum//ESC,CMD81,SUBA4,LEN=6,err,CheckSum ->0:成功; !=0:见错误表//返回时:EepromAdd_4_2->发票流水地址;EepromAdd_4_2+4->电子存根地址//功能: 查询已经使用的发票信息及打印明细int QueryAlreadyUseBillInfo(void){ int err; char command[] = {0x1b,0x81,0xa4,5,0,0}; char return_buf[20]; err = SendCommand(command,command[3],return_buf); if(err || return_buf[4]) { if(err) return err; else return return_buf[4]; } usleep(500); return err;}//===========================================================================//将 发票流水记录 标记 退货标志 ( 流水记录的第28字节 ),为标记原发票记录//ESC,CMD81,SUBA5,LEN=5+4,RecAddr[4],CheckSum//ESC,CMD81,SUBA5,LEN=6,err,CheckSum ->0:成功; !=0:见错误表//功能: 写原发票退货标志int WriteReturnBaleFlag(unsigned long address){ int err; char command[] = {0x1b,0x81,0xa5,5+4,0,0,0,0,0,0,0,0,}; char return_buf[20]; memmove(&command[4],(unsigned char *)&address,4); err = SendCommand(command,command[3],return_buf); if(err || return_buf[4]) { if(err) return err; else return return_buf[4]; } usleep(500); return err;}//以上为2004.4.4增加内容//===========================================================================//开票预处理//ESC,CMD81,SUBA6,LEN=5+4,CurDate[4],CheckSum//ESC,CMD81,SUBA6,LEN=6+11,err,//税控标志(长度:1),当前发票号(长度:4),发票截至号(长度:4),发票流水存储计数器(长度:2),//CheckSum ->0:成功; !=0:见错误表//参数: BCD_now_date:BCD格式的当前系统日期(4Byte)int Pretreatment_TaxCtrBalance(unsigned char *BCD_now_date,unsigned char *balance_setout_info){ unsigned int err; char command[] = {0x1b,0x81,0xa6,5+4,0,0,0,0,0,0,0,0,}; char return_buf[100]; memmove(&command[4],BCD_now_date,4); err = SendCommand(command,command[3],return_buf); if(err) return err; if(return_buf[4]) err = return_buf[4]; else memmove(balance_setout_info,&return_buf[5],11); return err;}//===========================================================================//送开票数据//ESC,CMD81,SUBA7,LEN=5+43+4,开票结构(LEN=43),原发票号(LEN=4),CheckSum//ESC,CMD81,SUBA7,LEN=6,err,CheckSum 见err表//功能: 开票时发送开票数据i
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -