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

📄 htd30v02.c

📁 利用单片机实现的USB1.1通信。通过液晶屏的显示驱动代码
💻 C
📖 第 1 页 / 共 5 页
字号:
//06.08.02   显示板显示一直GOOD修改  LINE 6747
//06.08.03   1)修改IC卡值改变  LINE 1586.     2)打印格式
//06.08.03   1)修改停车前15分钟的记录 LINE 5010
//06.08.03   1)打印停车前15分钟的记录时 以最后一记录时间为准向前推15分钟  LINE 6982
//06.08.03   修改国标最近两天的疲劳记录(以停车时间为准)  case up_tire
//06.08.03   断电作为停车处理,记录断电前20秒所有数据     LINE 5295
//06.08.04   //c 使卡在拔掉后断电

//06.08.04   //cc04 修改两天里程

//06.08.05   确定两日历天内的开车时间  LINE 4333    void hour_2day(void)

/////////////////////调试////////////////////////////////////////////////////////////////
//CC调试NEED_INI

///////////////////////////////////////////////////////////////////////////////////////////////////
//system include
#include 	"AT89X52.H"
#include	"common.h"
#include	"string.h"
#include 	"STDIO.H"
#include 	"INTRINS.H"
#include	"absacc.h"
#include 	"intrins.h"
//usb include
//#include 	"COMMON.H"
#include 	"SL811.H"
#include 	"TPBULK.H"
#include 	"HAL.H"
#include 	"HPI.H"

//MEMORY UNIT DEFINED
#include 	"FM3164.H"
#include 	"FLASH.H"
#include 	"CARD_SAME.H"
#include 	"CARD_DRIVER.H"
#include 	"CARD_MANAGE.H"
#include 	"SHOW_MEMO.H"

#define	com1_rece_buf		UartCmdBlock.Com1_Rece_Buf
#define	com1_send_buf		UartRspBlock.Com1_Send_Buf

#define	flash_mid_add	low_word_flash.byte_flash_add.Flash_Mid_Add
#define	flash_low_add	low_word_flash.byte_flash_add.Flash_Low_Add
#define	LOW_WORD_FLASH	low_word_flash.word_flash_add;

extern 	FILE_INFO 	xdata 	ThisFile;
extern unsigned char xdata DBUF[2060];
extern SYS_INFO_BLOCK xdata DeviceInfo;

//extern 	XXGFLAGS	bdata bXXGFlags;
extern bit		SLAVE_FOUND;		// Slave USB device found
extern bit		TIMEOUT_ERR;		// timeout error during data endpoint transfer
extern bit		DATA_STOP;		// device unplugged during data transfer
extern bit		bData1;

extern 	void fat_to_time(uchar	*fat_style_ptr,uchar	*target_time_ptr);
extern	void time_to_fat(uchar	*source_time_ptr,ulong	*fat_style_ptr);

uchar	xdata	sel_hc377			_at_	0xa000;	//p15=0,p16=1,p17=1
//uchar	xdata	sel_sl811_memo	_at_	0x6000;	//p15=1,p16=0,p17=0
//uchar	xdata	sel_sl811_data		_at_	0x6001;	//p15=1,p16=0,p17=0
//port define
sbit		FM3164_SCL=P1^0;
sbit		FM3164_SDA=P1^1;
sbit		CARD_SCL=P1^2;
sbit		CARD_SDA=P1^3;
sbit		EEPCON=P1^4;					//=1表示外存储器控制权给显示部分,=0表示外存储器控制权给主控部分
sbit		SEL_OTHERS=P1^5;
sbit		SEL_IN_LOW=P1^6;
sbit		SEL_IN_HIGH=P1^7;

sbit		SPEED_IN=P3^2;
//sbit		S_SDA=P1^3;                  //cc 修改硬件前
sbit		S_SDA=P3^3;                  //cc 修改硬件后
sbit		USBIN=P3^4;					//检测PC-USB的5V,0为与PC电源相连
sbit		MASTER_SLAVER=P3^5;			//master/slave usb的主从控制,0控制为MAST,1为SLAVE

//bit direct address flags define
uchar 	data 	mirror_377;
//sbit		a16=mirror_377^0;
//sbit		a17=mirror_377^1;
//sbit		a18=mirror_377^2;
//sbit		a19=mirror_377^3;
//sbit		a20=mirror_377^4;
//sbit		rst811=mirror_377^5;
//sbit		o1=mirror_377^6;
//sbit		ext_vcc=mirror_377^7;

//uchar 	bdata 	in_buffer1;
//sbit		in1=in_buffer1^0;
//sbit		in2=in_buffer1^1;
//sbit		in3=in_buffer1^2;
//sbit		in4=in_buffer1^3;
//sbit		in5=in_buffer1^4;
//sbit		in6=in_buffer1^5;
//sbit		in7=in_buffer1^6;
//sbit		skid=in_buffer1^7;

//uchar 	bdata 	in_buffer2;
//sbit		in9=in_buffer2^0;
//sbit		in10=in_buffer2^1;
//sbit		in11=in_buffer2^2;
//sbit		in12=in_buffer2^3;
//sbit		in13=in_buffer2^4;
//sbit		in_user=in_buffer2^5;
//sbit		keelover=in_buffer2^6;
//sbit		card_find=in_buffer2^7;

uchar card_out1;

uchar 	bdata 	flag1;
sbit		dingshi=flag1^0;		//设定的时间到标志
sbit		keel_start=flag1^1;		//当前的倾覆数据开始,用来判断结束
sbit		receive_ok=flag1^2;		//=1 主通道有命令进入标志
sbit		start_rece1=flag1^3;	//=1 means had get the head of channle 1
sbit		bit_rate=flag1^4;		//=1 means 115200bps,=0 means 9600bps
sbit		jly_dkq=flag1^5;		//=0是记录仪,=1是读卡器
sbit		show_ok=flag1^6;		//display department is ready set bit 1
sbit		temp_bit=flag1^7;		//临时使用的位标志

uchar 	bdata 	flag2;
sbit		sel_ir=flag2^0;			//选择了红外传输=1
sbit		second_inc=flag2^1;		//秒到标志
sbit		minute_inc=flag2^2;		//分钟到标志
sbit		hour_inc=flag2^3;		//小时到标志
sbit		day_inc=flag2^4;		//天到标志
sbit		full_read=flag2^5;		//进入全读模式
sbit		over_skid=flag2^6;		//刹车时间超标标志
sbit		keel_over=flag2^7;		//倾覆标志

uchar 	bdata 	flag3;
sbit		pre_over_speed=flag3^0;	//预超速超标标志
sbit		over_pos_acc=flag3^1;	//正向加速度超标标志
sbit		over_neg_acc=flag3^2;	//负向加速度超标标志
sbit		user_triger=flag3^3;	//用户触发标志
sbit		lost_touch=flag3^4;		//一旦需要将波特率从115200降为9600时置1
sbit		full_frame=flag3^5;		//进入32768字节读取模式
sbit		check_show=flag3^6;	//定时检查显示部分是否有请求要求响应
sbit		head_tail=flag3^7;		//=1表示代表国标命令查询小时速度时的第一个数据是在FLASH中后64字节,=0表示在FLASH中前64字节

uchar 	bdata 	flag4;
sbit		old_card_exist=flag4^0;	//上次判断时卡存在标志
sbit		card_in=flag4^1;		//卡插入判到
sbit		card_out=flag4^2;		//卡拔出判到
sbit		send_ext_ok=flag4^3;	//在有扩展数据要输出时扩展通讯数据发送完毕时=1,否则为0
sbit		old_start=flag4^4;		//上一秒的起停状况,0表示停车状态,1表示启动状态
sbit		time_100ms=flag4^5;	//100毫秒到标志
sbit		head_local=flag4^6;		//=1表示代表国标命令查询小时速度时的第一个数据是在FLASH中(由flash_address.flash_page指示),=0表示在FM3164中
sbit		send_ok=flag4^7;	//在有扩展数据要输出时通讯数据头发送完毕,或者在无扩展数据要输出时所有数据发送完毕的时候=1,否则为0

uchar 	bdata 	flag5;		//该字节需要在RUN_SYMBOL中进行保存
sbit		now_start=flag5^0;		//当前在行进中置1,保存在铁电中便于断电恢复
sbit		have_speed=flag5^1;	//have one minute speed in this hour at least,保存在铁电中便于断电恢复
sbit		now_log_on=flag5^2;		//=1表示当前的登录状态为有效,保存在铁电中便于断电恢复
sbit		over_time_save=flag5^3;	//用来描述当前的超驾记录是否被记录下来
sbit		in_touch=flag5^4;		//进入了通讯有效区,115200BPS,此时主机与上位机联系成功,可自由通讯直至该标志失效,但未必是与操作软件握手的标志
sbit		now_bps=flag5^5;		//判断当时的通讯标志,在115200=1,在9600=0
sbit		write_flash=flag5^6;	//当前正在进行写入FLASH的标志
sbit		over_speed=flag5^7;	//超速标志




uchar	bdata	op_mode;
sbit		need_ini=op_mode^0;		//未经初次初始化,需要进行
sbit		normal_mode=op_mode^1;		//=1当前在装车模式,判断是否退出主循环
sbit		need_assemble=op_mode^2;	//为1当前在归库模式,需要执行装车命令后才可使用
sbit		adjust_mode=op_mode^3;		//为1当前在调试模式,可以当作正常已执行装车命令的记录仪使用
sbit		ext_ram=op_mode^4;		//当前在写FLASH,被中断打断就要置1便于写程序重新开始
sbit		modechanged=op_mode^5;		//=0表示在Normal模式,=1表示模式已改变
sbit 		mastermode=op_mode^6;		//=0表示在Slave模式,=1表示在Master模式
sbit 		operatmode=op_mode^7;		//=0表示Master或Slave模式未初始化,=1表示已初始化

uchar	bdata	tire_symbol;
sbit		find_tire=tire_symbol^0;		//当前已经判断得到了疲劳驾驶,一旦停车或断电就将记录
sbit		taken_start=tire_symbol^1;	//当前已经判断得到了用于统计疲劳驾驶的开车时间,存放在oldstarttime中,在find_tire由0变1时写入该驾驶员当前疲劳指针所指位置,在find_tire由1变0时清除
sbit		interval_symbol=tire_symbol^2;//当前的设定间隔有非0的速度,需要在存满后转移到FLASH中去
sbit		zone1_over=tire_symbol^3;	//FLASH第1区的数据即将溢出的标志,=1表示在每次登录的时候要用语音提示“请您上传数据”
sbit		zone2_over=tire_symbol^4;	//FLASH第2区的数据即将溢出的标志,=1表示在每次登录的时候要用语音提示“请您上传数据”
sbit		zone3_over=tire_symbol^5;	//FLASH第3区的数据即将溢出的标志,=1表示在每次登录的时候要用语音提示“请您上传数据”
sbit		zone4_over=tire_symbol^6;	//FLASH第4区的数据即将溢出的标志,=1表示在每次登录的时候要用语音提示“请您上传数据”
sbit		zone5_over=tire_symbol^7;	//FLASH第5区的数据即将溢出的标志,=1表示在每次登录的时候要用语音提示“请您上传数据”

uchar 	bdata 	s_order1;
sbit		time_flash=s_order1^0;		//时间刷新
sbit		speed_flash=s_order1^1;		//速度刷新
sbit		vcc_flash=s_order1^2;		//车辆特征系数刷新
sbit		driver_flash=s_order1^3;		//驾驶员代码刷新
sbit		distance_flash=s_order1^4;	//总里程刷新
sbit		tire_over=s_order1^5;		//语音信息申请刷新
sbit		pre_sp_flash=s_order1^6;	//预超速限刷新
sbit		over_sp_flash=s_order1^7;	//超速限刷新

uchar 	bdata 	s_order2;
sbit		sp_15_flash=s_order2^0;		//停车前15分钟平均车速刷新
sbit		tire_flash=s_order2^1;		//疲劳记录刷新
sbit		udisk_in=s_order2^2;		//优盘插入
sbit		trans_flash=s_order2^3;		//传输数据比例刷新
sbit		mode_change=s_order2^4;	//操作状态变更
sbit		type_change=s_order2^5;		//操作类型变更
sbit		card_change=s_order2^6;		//卡状态变化
sbit		show_trans=s_order2^7;		//正在与上位机通讯

uchar 	bdata 	s_order3;
sbit		start_stop=s_order3^0;		//当前车辆起停状态变化
sbit            pre_tire_flash=s_order3^1;
sbit            over_tire_flash=s_order3^2;

uchar 	bdata 	s_ask1;
sbit		ask_log_off=s_ask1^0;		//注销请求
sbit		print_enter=s_ask1^1;		//打印确认
sbit		ask_tire=s_ask1^2;		//疲劳记录申请
sbit		ask_15min=s_ask1^3;		//停车前15分钟速度数据申请
sbit		ask_distance=s_ask1^4;		//总里程数据申请
sbit		data_lost=s_ask1^5;		//上位机发送信息缺损
sbit		ask_host=s_ask1^6;		//申请主机通讯联机
sbit		down_to_card=s_ask1^7;		//用户干预要求将信息下载到用户卡中

//uchar bdata 	s_ask2;


uchar	bdata	s_card_type;
sbit		card_exist=s_card_type^0;	//=1 means card is plug in卡插入/拔出
sbit		card_type=s_card_type^1;	//管理卡/个人卡,=1表示是管理员卡,=0代表是普通卡,该位只在card_exist=1且card_right=1即有合法卡的情况下才有意义;
sbit		card_right=s_card_type^2;	//非法卡/合法卡,=1表示是合法卡,=0代表是非法卡,该位只在card_exist=1即有卡的情况下才有意义;
sbit		right_driver=s_card_type^3;	//非法/合法驾驶员
sbit		log_status=s_card_type^4;	//登录/注销
sbit		licence_ok=s_card_type^5;	//驾照有效/失效
sbit		have_order=s_card_type^6;	//有/无命令要执行
sbit		order_confirm=s_card_type^7;//命令执行正确/错误

uchar	idata	recorder_status;	//记录仪的状态字,轮询的第2字,%4=0。。。
uchar	bdata	connect_status;	//连接状态字,轮询的第1字,它的状态必须被及时信息更新,保证实时性
sbit		poll_jly_dkq=connect_status^0;		//BIT0:0为读卡器,1为记录仪
sbit		poll_card_exist=connect_status^1;		//BIT1:0为无卡,1为有卡
sbit		poll_card_right=connect_status^2;		//BIT2:0为卡无效,1为卡有效
sbit		poll_card_type=connect_status^3;		//BIT3:0为管理卡,1为用户卡
sbit		poll_recorder_pass=connect_status^4;	//BIT4:0为主机写密码校验已通过,1为未通过
sbit		poll_card_pass=connect_status^5;		//BIT5:0为卡的写密码校验已通过,1为未通过
sbit		poll_undefined0=connect_status^6;		//BIT6:未定义
sbit		poll_available=connect_status^7;		//BIT7:设备合法为1,非法为0

bit  uart_in_dbuf;
//uchar xdata speed_down;
xdata  BYTE   set_time;
xdata time_set1;
xdata after_set_1;
xdata  uchar  c_time[6];
xdata  uchar  now_in_order;
xdata  uchar  modify_password;
uchar 	xdata usb_link_time;
//xdata  uchar   ptr_c;
xdata  uchar    old_user_triger,now_user_triger;

xdata  uchar   last_neg_once;

xdata	union
	{
	uchar	temp_byte[2];
	uint	temp_word;
	}tempx;
xdata  uchar   head_tail1;

typedef	struct
	{
	uchar	speed_per;
	uchar	status1_per;
	uchar	status2_per;
	}SPEED_STATUS,*PSPEED_STATUS;

data	union
	{
	uchar	temp_byte[2];
	uint	temp_word;
	}tempc,tempd;

data	union
	{
	ulong		temp_long;
	uint		temp_word[2];
	uchar	temp_byte[4];
	}tempe;
data	union
	{
	uint		flash_page;
	uchar	flash_arr[2];
	struct
		{
		uchar	page_MSB;
		uchar	page_LSB;
		}flash_byte;
	}flash_address;

data	union
	{
	uint		add_word;
	uchar	add_byte[2];
	}add_start;						//I2C start address that need operate

idata	union{
	uint		km_word;
	uchar	km_byte[2];
	}km_pulse;
idata	union{
	ulong		distance_long;			//now distance unit is 0.1km,read it every power on,re-caculate per_day or km_pulse changed
	uchar	distance_byte[4];
	}distance;
typedef	struct					//用来传递参数的结构,每次从
		{
		uint		ptr_address;		//指针的地址
		uint		data_address;		//数据要被记录的指针
		uchar	page_number;		//每个页面可记录的条数
		uchar	info_number;		//记录满后要转移到FLASH的序号
		}SAVE_TO_MEM;

uchar	idata		time5ms;
uchar	idata		tail_time;			//上电的时间秒数或者最后记录的尾限,用来限定负向作用域的大小,超过16后停止自增,在事件触发当时如果该字节的数额不足,将以此为负向作用域的大小
uchar	idata		pos_time;			//正向作用域时间秒数,只可由事件触发后变大,每秒自减1,为0后停止自减,
uchar	idata		neg_time;			//负向作用域时间秒数,只可由事件触发后变大,每秒自增1,超过16后停止自增,每当事件标志有效时判断该字节为8的倍数时进行写FLASH并减8,直至为零
uchar	idata		now_control;		//按照0-7位分别对应1-7合法及非法驾驶员的关系,分别在检测到开车时把对应的位置1,而在每一个可以被6整除的分钟到达时写入,上电时需要对记录队列进行检查重置,并将该值清0
uchar	idata		tempi;			//临时变量
uchar 	idata		uart_sendhead;
uchar 	idata		uart_sendtail;
uchar 	idata		uart_recehead;
uchar 	idata	        uart_recetail;
xdata	int             uart_recehead1;
xdata 	int             uart_recetail1;
uchar 	idata		times;
uchar	idata		flash_high_add;
uchar   xdata           after_b4_sd;
uchar   xdata           mod_driver;
uchar   xdata  tempy;

union
	{
	struct
		{
		uchar	Flash_Mid_Add;
		uchar	Flash_Low_Add;
		}byte_flash_add;
	uint	word_flash_add;
	}low_word_flash;
uchar	idata		bitrate_time;
uchar	idata		checksum_rece;	//uart data checksum,is result of all receive data xor
uchar	idata		checksum_send;	//uart data checksum,is result of all send data xor
uchar	idata		over_sp_time;		//连续超速的时间,超过10秒(待定)的将被作为真正的超速记录下来
uchar	idata		now_speed;		//当前秒的车速
uchar	idata		now_driver_num;	//无卡登录是8,0-6是合法驾驶员,7是非法驾驶员,每次变换登录时和修改驾驶员代码时修改
uint		idata		old_second_pulse;	//上一秒的脉冲,用来甄别是否需要向显示部分发送新的速度
uchar	idata		speed_peak;		//峰值速度
uchar	idata		time20ms;
uchar	data		tempa,tempb;
uchar	idata		last_8second;		//按位判断,每秒左移一位并将末位的根据该秒是/否发生速度置1/清0,最后的5位是用来确定启动的条件,而末位是用来判定停车的条件
uchar	idata		temp_arr[9];
uchar	idata		last_keel;		//按位判断,每0.2秒左移一位并将末位的根据是/否发生倾覆置1/清0,最后的5位是用来确定倾覆的条件,而末位是用来判定退出倾覆的条件
uchar	idata		old_card_type;
uchar	idata		now_time[6];
uchar	data		interval_speed;		//区间时间内的平均速度
uchar	idata		interval_status1;	//区间时间内的状态,如果任何一个0.2秒有效就认为是有效
uchar	idata		interval_status2;	//区间时间内的状态,如果任何一个0.2秒有效就认为是有效
uchar	idata		interval_second;	//区间记录当前已经出现的秒数
uint	idata		interval_pulse;		//区间时间内的脉冲数,用来统计区间平均速度
uchar	idata		toggle_time;		//记录进入当前USB模式的时间,用来判断是否需要切换模式

uchar	data		pulse_period;		//存放最后0.2秒的脉冲数
uchar	data		old_pulse_period;	//存放最后0.2秒的脉冲数

uint      xdata         pulse_period_20;
uint		data		speed_pulse;
uchar            xdata           stop_20_time;
ulong		data		day_pulse;
uchar	idata		order_name;
uchar	idata		time_uart;
uchar   xdata		begin_tire;
uchar	xdata       stop_time[6];
bit mma;

//uchar	record_pt;			//now the localation will be recorded in ram
//uchar	keel_time;
//uchar	period_pulse;
//uchar	second_pt;
//uchar	old_order1;			//用来判断是否有发布命令的变化,确定是否要写入显示部分的IIC
//uchar	old_order2;			//用来判断是否有发布命令的变化,确定是否要写入显示部分的IIC
//uchar	idata		last_frame;	//全读的上次发送的帧号

uint    xdata   over_skid_time;
uchar    xdata   no_skid;

uchar   xdata  have_int;
uchar	xdata	tire_alarm;
uchar	idata	in_buffer1;
uchar	idata	in_buffer2;
uchar	xdata	hour_pulse;
uchar	xdata	usb_time;
uchar	xdata	alarm_time;
uchar	xdata	error_time;
uchar	xdata	now_status;		//当前的记录仪所在模式:空白/调试/入库/使用
ulong		xdata	drive_time;
uint		xdata	spare_time;
uint		xdata	hour_number;
uint		xdata	second_pulse;
uint		xdata	minute_pulse;
uint		xdata	old_minute_pulse;
uint		xdata	over_speed_time;
uchar       xdata   car_mode;
uchar	xdata	flash_buf[128]	_at_	0x0280;

uchar	xdata	eep_buf[32];
uchar	xdata	now_recorder[4];	//now what the ic card pluged into,it series num will be record
uchar	xdata	now_driver[3];

uchar	xdata	old_time[6];
uchar	xdata	last_time[6];
uchar	xdata	oldstarttime[6];
uchar	xdata	oldstoptime[6];
uchar	xdata	log_user[8];		//当前登录的用户识别码,在通讯握手后移交到下位机

xdata	struct
	{
	SPEED_STATUS	speed_status[40];		//100
	uchar			last_ptr;		//指向最后一个已经被写到的EEP的位置的偏移量
	uchar			now_ptr;		//当前的记录偏移量
	}sp_st_ram	_at_	0x0100;
UART_RECE_BLOCK 	xdata UartCmdBlock	_at_	0x0200;
UART_SEND_BLOCK 	xdata UartRspBlock	_at_	0x0240;

xdata	union{
	ulong		cal_long;
	uint		cal_word[2];
	uchar	cal_byte[4];
	}caculate;
xdata union
	{
	uchar	para_vehi[16];
	struct
		{
		uchar	mute_8_sw;
		uchar	keel_detect_sw;
		uchar	print_plus_sw;
		uchar	function_sw;
		uchar	pre_oversp_lmt;
		uchar	oversp_lmt;
		uchar	rec_interval;
		uchar	pos_acc_lmt;
		uchar	neg_acc_lmt;
		uchar	tire_print;
		uchar	skid_remain_time;
		uchar	nullity_07;
		uchar	nullity_8f;
		uchar	run_sec;
		uchar	rest_sec;
		uchar	over_time_set;
		}para_arr;
	}parameter;
xdata	union{
	uint		vcc_word;				//the vcc*8 of the vehicle,read it every power on
	uchar	vcc_byte[2];
	}vcc;
uchar	code		firmware_ver[8]={0x00,0x01,0x05,0x06,0x01,0x00,0x00,0x00};		//硬件的版本号和日期,根据实际的内容要作修改,本例为V0。01,2005/06/01。00:00:00


uchar	code		print0[]={0X1B,0X40,0X1C,0X26,0X1C,0X69,0X0};								/*set print */
uchar	code		print1[]={0XB3,0XB5,0XC5,0XC6,0XBA,0XC5,0XC2,0XEB,0X3A,0x20};				//车牌号码:
uchar	code		print2[]={0XB3,0XB5,0XC5,0XC6,0XB7,0XD6,0XC0,0XE0,0X3A,0x20};				//车牌分类:
uchar	code		print3[]={0XBC,0XDD,0XCA,0XBB,0XD4,0XB1,0XB4,0XFA,0XC2,0XEB,0X3A,0x20};		//驾驶员代码:
uchar	code		print4[]={0XBC,0XDD,0XCA,0XBB,0XD6,0XA4,0XBA,0XC5,0XC2,0XEB,0X3A,0x20};	//驾驶证号码:
uchar	code		print5[]={0XB2,0XBB};														//不
uchar	code		print6[]={0XCA,0XC7,0XB1,0XBE,0XB3,0XB5,0XBA,0XCF,0XB7,0XA8,0XBC,0XDD,0XCA,0XBB,0XD4,0XB1}; 		//是本车合法驾驶员
uchar	code		print7[]={0XB4,0XF2,0XD3,0XA1,0XCA,0XB1,0XBC,0XE4,0X3A,0x20};				//打印时间:
uchar	code		print8[]={0XC4,0XEA,0XD4,0XC2,0XC8,0XD5,0XCA,0XB1,0XB7,0XD6,0XC3,0XEB};		//年月日时分秒
uchar	code		print9[]={0XB4,0XCB,0XB4,0XCE,0XCD,0XA3,0XB3,0XB5,0XC7,0XB0,0X31,0X35,0XB7,0XD6,0XD6,0XD3,0XB1,0XBE};				//此次停车前15分钟本
uchar	code		print10[]={0XC8,0XCB};														//人
uchar	code		print11[]={0XB3,0XB5};														//车
uchar	code		print12[]={0XB5,0XC4,0XC6,0XBD,0XBE,0XF9,0XCB,0XD9,0XB6,0XC8,0X20,0X20,0X20,0X20,0X20,0X20,0X6B,0X6D,0X2F,0X68};		//的平均速度      km/h
uchar	code		print13[]={0XBC,0XDD,0XCA,0XBB,0XD6,0XA4,0XBA,0XC5,0XC2,0XEB,0XCE,0XAA};	//驾驶证号码为
uchar	code		print14[]={0XB5,0XC4,0XD7,0XEE,0XBD,0XFC,0XC6,0XA3,0XC0,0XCD,0XBC,0XDD,0XCA,0XBB,0XBC,0XC7,0XC2,0XBC,0XA3,0XBA,0x20};//的最近疲劳驾驶记录:
uchar	code		print15[]={0XB4,0XD3};														//从
uchar	code		print16[]={0XB5,0XBD};														//到
uchar	code		print17[]={0XCD,0XA3,0XB3,0XB5,0XC7,0XB0,0X32,0X30,0XC3,0XEB,0XD2,0XC9,0XB5,0XE3,0XCA,0XFD,0XBE,0XDD,0X3A,0x20};	//停车前20秒疑点数据:
uchar	code		print18[]={0XCD,0XA3,0XB3,0XB5,0XCA,0XB1,0XBC,0XE4,0X3A,0x20};				// 停车时间:

⌨️ 快捷键说明

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