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

📄 deviceclass.h

📁 高速公路收费系统车道软件. 功能: 1 检测公路过往车辆 2 收费过程控制和数据采集 3 车辆信息和图片上传服务器.
💻 H
字号:
//	本文件所定义类均为硬件设备边界类。对功能较复杂的硬件设备,
//	在文件DeviceInfo.h中存储该设备的信息;对功能较简单的设备,
//	设备信息直接在本文件中存储
//////////////////////////////////////////////////////////////////////

#if !defined(AFX_DEVICECLASS_H__5F44F897_AF38_4C9D_8E1C_011B274AD570__INCLUDED_)
#define AFX_DEVICECLASS_H__5F44F897_AF38_4C9D_8E1C_011B274AD570__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000



//	以下定义输出外设名称
const int AUTO_RAIL_OPEN		=0;			//自动栏杆开
const int AUTO_RAIL_CLOSE		=1;			//自动栏杆关
const int INDICATION_RED		=2;			//交通指示红灯
const int INDICATION_GREEN		=3;			//交通指示绿灯
const int RAIN_RED				=8;			//雨棚红灯
const int RAIN_GREEN			=9;			//雨棚绿灯
const int AMBER_DEVICE			=10;		//报警灯
//	以下定义输入外设名称
const int LEAVE_LOOP_DEVICE		=0;			//检测线圈状态
const int PICTURE_LOOP_DEVICE	=1;			//抓拍线圈状态
const int SPARE1_INPUT_DEVICE	=2;			//备用输入外设1
const int SPARE2_INPUT_DEVICE	=3;			//备用输入外设2
const int SPARE3_INPUT_DEVICE	=4;			//备用输入外设3
const int SPARE4_INPUT_DEVICE	=5;			//备用输入外设4

//	通讯协议:9600bps、Odd校验、8位数据位、1位停止位
//	车道软件 ---> CXP板
//	1、请求输入外设的状态:0A E 0D
//	2、命令输出继电器状态:0A X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 0D
//		X1:自动栏杆开				X2:自动栏杆关	
//		X3:备用输出开关信号1		X4:备用输出开关信号2
//		X5:有源输出开关信号1.1		X6:有源输出开关信号1.2
//		X7:有源输出开关信号2		X8:有源输出开关信号3
//		X9:雨棚红灯				X10:雨棚绿灯
//		X11:备用输出交流开关信号1	X12:备用输出交流开关信号2
//	CXP板 ---> 车道软件
//	1、请求输出继电器状态:		0A S 0D
//	2、报告当前输入外设状态:	0A E X1 X2 X3 X4 X5 X6 0D
//		X1:#2 线圈(离开线圈)		X2:#1 线圈(抓拍线圈)
//		X3:备用输入1				X4:备用输入2
//		X5:手动栏杆				X6:脚踏开关

//	类CCxp为输入、输出控制板的设备边界类,主要负责和CCxp板的
//	通讯。本类存储和通讯协议有关的数据,但不存储实际外设的状
//	态。例如:每个外设在通讯协议中的位置保存在本类中,但该外
//	设的实际状态存储在CCxpInfo类中。
class CCxp
{
public:
	CCxp();
	void TestOutputDevice(char *pStr);
	void ProcessInputData(char *pStr);
	void AskIoStatusTimerOut();
	void AmberTimerOut();
	void PictureLoopTimerOut();
	void LeaveLoopTimerOut();
	void DefineAutoRailStatus(char status);
	void DefineAmberStatus(char status);
	void DefineIndicationStatus(char status);
//	void DefineRainStatus(char status);
	void Initial();
private:
	CCxpInfo m_clsCxp;
	void SendCxpData();
	void SendCxpData(char *pStr,int nLen);
	static BOOL bNormalFlag;
};

/*
5字条屏软件协议

;一、波特率
         2400,N,8,1
二、通讯格式
   1、发送时间:
      55H,AAH,01H, 年低位,月,日,时,分,秒 ,星期

      例如:发日期时间 :2003年1月17日20时20分21秒,星期4
 到显示屏
     共发10个字节 :
 55H, AAH, 01H,  03H,  01H,  11H,  14H,  14H,  15H,  04H

2、发送数据:
    55H,AAH,02H,   15H, “字符串”,0DH
    超过5字左移
 例如:发日“大型车45元”  到显示屏并停留15秒钟
     共发下列数据 :
 55H,AAH,02H,15H, “大型车45元”,0DH
*/

class CTfi
{
public:
	CTfi();
	void Initial();
	void DisplayTFI();
	void ClearTFI();
	void AdjustVolume(UCHAR nDirect);
	void ShowDay();
	void ShowNight();
	void AutoTestTfi();
	void ProcessTimerOut();
private:
	void SendTFIData(char *param1,int length);
	static BOOL bAutoTestFlag;		//自动测试TFI标志
	static BOOL bNormalFlag;
};

//	声卡设备边界类,负责将合成后的声音文件送到声卡进行播放。
//	语音文件的合成不包含在此类中
class CSound
{
public:
	CSound();
	void Initial();
	void ProcessTimerOut();
	void StopPlay();
	void PlayThankYou();
	void PlayFare();
	void ReleaseDevice();
private:
	void AssembleSound(char *pSrc,char *pObj);
	UINT GetSoundLen(char *pFileName);
	BOOL LoadSound(char *pFileName,char *pPointer,UINT nLen);
	DWORD ByteToDWORD(char *pStr);
	static char *pSoundImage;	//存储要播放声音数据
//	以下指针指向基准声音文件,基准声音文件位于车道软件安装
//	目录下
	static char *pClass;		//存储“车型”声音文件
	static UINT nClass;			//存储“车型”声音文件长度
	static char *pRMB;			//存储“圆”声音文件
	static UINT nRMB;			//存储“圆”声音文件长度
	static char *pNumber[14];	//存储数字声音文件
	static UINT nNumber[14];	//存储数字声音文件长度
//	存储数字,顺序为0、1、2、3、4、5、6、7、8、9、十、百、千、两
	static char *pThankYou;		//存储“谢谢”
	static char *pFree;			//存储“免费”声音文件
	static UINT nFree;			//存储“免费”声音文件长度
	static char *pSpace;		//存储间隔声音文件
	static UINT nSpace;			//存储间隔声音文件长度
};

//	票据打印机设备边界类,负责控制票据打印机动作并提供打印机
//	状态接口。要打印的信息从CTransInfo类及CTimeInfo类中获取
class CPrinter
{
public:
	CPrinter();
	void Initial();
	void ProcessPrinterInfo(char Status);
	void PrePrintInvoice();
	BOOL PrintInvoice();
	void ClearBuff();
	void Feed();
	BOOL NormalFlag();
	void NormalFlag(BOOL value);
private:
	BOOL SendPrintData(char *pBuff,int iLen);
	void ConvertMoney(UINT iData,char *chData);
	static BOOL bNormalFlag;
	static char chPrinterStatus;
};

/*
字符叠加器通讯协议

1、   波特率 2400 
由 PC 主动发命令,采用 ASCII 码 
格式: 8 位奇偶检验位, 1 停止位 

2、   命令表 

A、 显示信息命令 
*0A1# 
* # 为起始码、结束码 
0 为功能码    功能:显示信息 
A1 为车道号( 0-9 ) 

B、 字符位置命令 
*1n# 
1 为功能码 
n : 1 ,, 9 , abcd (对应 1-13 个位置, 1 最上) 

C、 字符显示延时 
*2n# 
2 功能码 
n : 0 , 1 ,,, A 
1 ,, 9 , A 为 1-10 秒 
0 为长延时,直到下一个数据为止 

D、 修改时钟 
*3Y1Y2M1M2D1D2H1H2F1F2S1S2# 
3 功能码 
Y , M , D , H , F , S 对应年月日时分秒 
年份中 2001 年的 20 固定 

E、 显示信息命令 
*4C1D1D2D3# 
4 功能码 
C1 车型( 0 , 1 ,,, 9 , abcd ,, z ) 
D1d2d3 金额( 000-999 ),如为空格字符则屏幕不显示 

F、 显示信息命令 
*5b1b2b3b4# 
5 功能码 
b1b2b3b4 工号( 0000-9999 ),如为空格字符则屏幕不显示 
*/
const UCHAR OVERLAY_HEAD			=0x2A;	// 起始码 *(42)
const UCHAR OVERLAY_TAIL			=0x23;	// 结束码	#(35)

const UCHAR OVERLAY_DISPLAY_LANE	=0x30;	//显示车道号 0
const UCHAR OVERLAY_POSITION		=0x31;	//字符位置
const UCHAR OVERLAY_DELAY			=0x32;	//字符显示延时
const UCHAR OVERLAY_TIME			=0x33;	//时钟
const UCHAR OVERLAY_CLASS_MONEY		=0x34;	//显示车型金额
const UCHAR OVERLAY_COLLECT_NO		=0x35;	//显示收费员工号

const char	LINE					='1';	//字符位置
const char	DISPLAY_TIME			='3';	//字符显示延时时间

/*
const UCHAR	OVERLAY_WORD		=0x60;	//发送显示字符
const UCHAR OVERLAY_ON			=0x61;	//字符叠加开
const UCHAR OVERLAY_OFF			=0x62;	//字符叠加关
const UCHAR OVERLAY_LARGE		=0x63;	//大字符显示
const UCHAR OVERLAY_SMALL		=0x64;	//小字符显示
const UCHAR OVERLAY_ATTRIBUTE	=0x65;	//设置字符属性
					//	BIT 7:置1闪烁	BIT 5:置1黑底
const UCHAR OVERLAY_CANCEL		=0x66;	//取消字符属性
					//	BIT 7:置1闪烁	BIT 5:置1黑底
const UCHAR OVERLAY_VERSION		=0x67;	//获取机器版本号
const UCHAR OVERLAY_CLEAR		=0x68;	//清屏
const UCHAR OVERLAY_SET_TIME	=0x80;	//设置日期、时间
const UCHAR OVERLAY_POSITION	=0x82;	//设置时间显示位置
const UCHAR OVERLAY_TIME_ON		=0x85;	//显示时间开
const UCHAR OVERLAY_TIME_OFF	=0x86;	//显示时间关
const UCHAR	OVERLAY_LIGHT_1		=0x87;	//字符亮度设置为暗
const UCHAR OVERLAY_LIGHT_2		=0x88;	//字符亮度设置为亮
//	字符叠加器通讯协议:9600bps、8位数据位、无校验、1位停止位
//	起始码0xff、0xfe、40字节定长
//	命令格式:起始码(2 byte) + 机器地址(1 byte) + 命令方式字
//	(1 byte) + [命令内容(35 byte)] + 校验和(1 byte),其中起始
//	码固定为0xff、0xfe,机器地址由叠加器上的拨动开关设置,我们
//	总使用地址0,详细说明如下:
	
//	类型		长度	内容					说明
//	起始码		 2		0xff 0xfe
//	机器地址	 1		0						目前总使用地址0
//	命令		 1		下面定义的命令常量		
//	行号		 1		字符显示位置的行号-1	
//	列号		 1		字符显示位置的列号-1 
//	通道选择	 1		0x00:双路叠加			
//						0x10:第一路叠加
//						0x20:第二路叠加
//	数据		 32		叠加汉字直接使用汉字代码(每个汉字占2字节)
//						叠加英文使用ASCII,必须占用偶数字节
//	校验和		 1		除起始字节外其他所有字节的异或和

//	字符叠加器设备边界类,负责将文字信息叠加到视频信号上。要叠
//	加的信息从CLaneInfo类及CTransInfo类中获取
const char LINE_1			=3;		//车道信息行位置(第4行)
const char LINE_2			=5;		//交易信息行位置(第6行)
const char COL_1			=5;		//车道信息列位置(第6列)
const char COL_2			=6;		//交易信息列位置(第7列)
*/
class COverlay
{

#define PLAZA_NO				0
#define LANE_NO_BUFF			2
#define COLLECT_NO_BUFF			4
#define TIME_BUFF				9
#define BUS_CLASS_BUFF			13
#define MONEY_BUFF				14
#define EVENT_TYPE_BUFF			17

public:
	COverlay();
	void Initial();
	void InitialTimerOut();
	void ProcessTimerOut();
	void OverlaySetStatus(char Line);
	void OverlayLaneInfo();
	void OverLayCollectNo();
	void OverlayTransInfo();	
	void OverlaySetTime();
	void OverlayDelay(char Second);
	//void ProcessOverlayData(unsigned char Status);
private:
	void SendOverlayData(UCHAR *pStr,int nLen);
	static BOOL bNormalFlag;

	static unsigned char pDataBuff[30];
	static int iCollectNO;
	static int iLaneNO;
	static BOOL bNewDataFlag;
	static BOOL bNewPositionFlag;
	static char pCommandBuff[2];
};

//	读/发卡机通讯协议:9600bps 1位起始位 8位数据位 1位停止位 无校验



#endif // !defined(AFX_DEVICECLASS_H__5F44F897_AF38_4C9D_8E1C_011B274AD570__INCLUDED_)

⌨️ 快捷键说明

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