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

📄 lcitemnode.h

📁 使用器件TI DSP TMS320C5402
💻 H
字号:
// LCItemNode.h: interface for the LCItemNode class.
// Write by Lidd, 2002-12-08
// Modified by ZhaoPeng
//////////////////////////////////////////////////////////////////////

#if !defined __HAN_LCITEMNODE_H__
#define __HAN_LCITEMNODE_H__

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

#include <winsock2.h>

/////////////////////////////////////////////
// Command define
#define COMM_TYPE_BC		0xe0	// Open file control
#define COMM_TYPE_PAGETO	0xe1	// Open file control
#define COMM_TYPE_STOPBC	0xe2	// Open file control
#define COMM_TYPE_DISABLE   0xe3

#define COMM_TYPE_OPEN		0xf0	// Open file control

#define COMM_TYPE_CLOSE		0xfa	// Close file control
#define COMM_TYPE_PLAY		0xf1	// Play control
#define COMM_TYPE_PAUSE		0xf2	// Pause control
#define COMM_TYPE_STOP		0xf3	// Stop control
#define COMM_TYPE_FF		0xf6	// FF control
#define COMM_TYPE_FREW		0xf7	// Frew control
#define COMM_TYPE_SEEK		0xf4	// Seek control

#define COMM_TYPE_PAGE		0xa1	

#define COMM_TYPE_RECB		0xf8	// Record begin control
#define COMM_TYPE_RECE		0xf9	// Record stop control


//

// Media artribute define
#define COMM_ARRT_MPEG		0x01	// MPEG media
#define COMM_ARRT_PCM		0x02	// PCM media
#define COMM_ARRT_MIX		0x03	// Mix media
#define COMM_ARRT_TXT		0x04	// Mix media
#define COMM_ARRT_MENU		0x10	// Menu media

// Term ID
#define COMM_TERM_NONE		0xf0	// None
#define COMM_TYPE_IMG		0x92
// ...

// Up command from iterms.
#define UP_COMM_REQU		0x80	// Request some data
#define UP_COMM_RECORD_DATA	0xf3	// Data

// Down command
#define DN_COMM_TYPE_NONE	0xff	// No data
#define DN_COMM_TYPE_MIX	0x82	// Mix data
#define DN_COMM_TYPE_MENU	0x83	// Menu data
#define DN_COMM_TYPE_DATA	0x84	// Media data
#define DN_COMM_TYPE_END	0x85	// End command
#define DN_COMM_TYPE_CLEAR	0x86	// Clear buffer
#define DN_COMM_TYPE_SWITCH	0x87	// Switch MPEG1 to PCM
#define DN_COMM_TYPE_START	0x88	// Start PCM data
#define DN_COMM_TYPE_RECB	0x89	// Start record
#define DN_COMM_TYPE_RECE	0x8a	// Stop  record
#define DN_COMM_TYPE_FROOZE	0x8b	// Image frooze
#define DN_COMM_TYPE_MENUA	0x8c	// position err

	#define DN_COMM_WORD_MPEG	0x01	// MPEG1 data
	#define DN_COMM_WORD_PCM	0x02	// PCM data
	#define DN_COMM_WORD_MP3	0x03	// MP3 data
		#define DN_COMM_PARA_RATE_0	0x00	// Bit rate 0: 44.1 K
		#define DN_COMM_PARA_RATE_1	0x01	// Bit rate 1: 22.05 K
		#define DN_COMM_PARA_RATE_2	0x02	// Bit rate 2: 11.025 K
		#define DN_COMM_PARA_RATE_3	0x03	// Bit rate 3: ......
		#define DN_COMM_PARA_RATE_4	0x04	// Bit rate 4: 
		#define DN_COMM_PARA_RATE_5	0x05	// Bit rate 5: 
		#define DN_COMM_PARA_RATE_6	0x06	// Bit rate 6: 
		#define DN_COMM_PARA_RATE_7	0x07	// Bit rate 7: 
		#define DN_COMM_PARA_RATE_8	0x08	// Bit rate 8: 
		#define DN_COMM_PARA_RATE_9	0x09	// Bit rate 9: 
		#define DN_COMM_PARA_RATE_A	0x0a	// Bit rate 10: 
		#define DN_COMM_PARA_RATE_B	0x0b	// Bit rate 11: 
		#define DN_COMM_PARA_RATE_C	0x0c	// Bit rate 12: 

#define MENU_MAX_LEVEL			0
#define MENU_LEVEL_ROOT			0
#define MENU_LEVEL_1			1
#define MENU_LEVEL_2			2
#define MENU_LEVEL_3			3
#define MENU_MAX_ITEM_PERPAGE	7
#define MENU_ID_NOUSE			0xffffffff

// Background image settings
#define BMP_BACK_ROW		288		// Rows
#define BMP_BACK_COL		352		// Cols
#define BMP_IMAGE_SIZE		304128	// Image size
#define BMP_MAX_SANQU		18

////////////////////////////////////////////////
// Net communication define
#define NET_DATA_FRAME_LEN		1000	// Frame's length, send or receive
#define NET_DATA_FRAME_HEADLEN	4		// Frame header's length, for send
#define NET_DATA_DATA_LEN		(NET_DATA_FRAME_LEN+NET_DATA_FRAME_HEADLEN)	// Data's length, send or receive
#define NET_DATA_SEND_FRAMES	8		// How many Frames should be sent in each send command
#define NET_DATA_READ_BLOCKS	30		// How many blocks should be read in each read command

#define NET_DATA_SEEK_MPEG		176400	// How many bytes a mpeg file should read in one second
#define NET_DATA_SEEK_PCM		22050*2	// How many bytes a pcm file should read in one second
#define NET_DATA_STEP_MPEG		529200	// How many bytes should be stepped over in mpeg files
#define NET_DATA_STEP_PCM		33075	// How many bytes should be stepped over in pcm files

#define NET_DATA_SEEK_MP3		16*1024	// How many bytes a mpeg file should read in one second

#define NET_REMOTE_COMM_PORT	9801	// Remote port for common commands
#define NET_REMOTE_DATA_PORT	9802	// Remote port for data

// Message define
#define SOCKET_READ_DATA		WM_USER + 10
#define SOCKET_READ_FILE		WM_USER + 11

#define ITEM_STATE_NONE			0xff	// No state, can't use it
#define ITEM_STATE_NORMAL		0x01	// Normal
#define ITEM_STATE_RUN			0x02	// Running

#define ITEM_LINK_NONE			0xff	// No link file, can't use it
#define ITEM_LINK_NEEDREAD		0x01	// Need read some data
#define ITEM_LINK_HAVEREAD		0x02	// Have read some data
#define ITEM_LINK_BEGINSND		0x03	// Begin send some data
#define ITEM_LINK_READSTOP		0x04	// Begin send some data

#define ITEM_LINK_SET			0x08	// Begin send some data

#define MENU_MODE_TXT			1
#define MENU_MODE_AUDIO			2

#define G_MLIST_NUM		1


#define STR_IP_BRORDCAST	"192.168.1.255"

///////////////////////////////////////////////////////
class LCItemNode  
{
public:
	LCItemNode();
	virtual ~LCItemNode();

	//////////////////////////////////
	// Initial server
	BOOL ServerSocketInit(UINT uPort);
	// Stop server
	BOOL StopServer(void);
	// Read data
	BOOL OnReadData(DWORD dwEvent);
	// Send command to item
	BOOL SendCommToItem(BYTE byCommand, BYTE byParam);
	// Send data to item
	BOOL SendDataToItem(void);
	// Process command
	BOOL ProcessCommand();
	
	///////////////////////////////////
	int		m_iThisNumber;
	CString strName;
	CString strIP;
	UINT	uPort;

	int		m_iCurPage;
	int		m_iMenuMode;
	
	BYTE	m_byState;		// Current state
	BOOL	m_bFileEnd;		// File stop flag
	FILE*	m_fpCurFile;	// Current file
	FILE*	m_fpCurLink;	// Current link file
	BYTE	m_byCurType;	// Current file type, mpeg, pcm, mixed or menu
	char	FileNameBuf[200];

	int		m_iPlayFlag;
	int		m_iEnableFlag;
	int		m_iSpeedFlag;
	time_t	m_tStartTime;	// Time of start FF or Frew.

	////////////////////////////////////
	SOCKET		m_soListen;
	WSAEVENT	m_EventArray;
	char		m_byBuf[NET_DATA_FRAME_LEN + NET_DATA_FRAME_HEADLEN];
	WSABUF		m_wsaRecvBuf;
	DWORD		m_dwRecvBytes;
	CString		m_strRecPath;
	FILE*		m_fpRecFile;

	SOCKET		m_soSend;
	BYTE		m_sendbuf1[NET_DATA_FRAME_LEN * NET_DATA_SEND_FRAMES * NET_DATA_READ_BLOCKS + NET_DATA_FRAME_HEADLEN];
	BYTE		m_sendbuf2[NET_DATA_FRAME_LEN * NET_DATA_SEND_FRAMES * NET_DATA_READ_BLOCKS + NET_DATA_FRAME_HEADLEN];
	PBYTE		m_pSendBuf1;
	PBYTE		m_pSendBuf2;
	int			m_iCurPointer;
	
	BYTE		m_byComm;
	BYTE		m_byType;
	BYTE		m_byPara[2];	

	double		m_dCurPlay;
	BOOL		m_bNeedPCMStart;
	int			m_iCurLink[2];
	int			m_iLinkParam[4];
	BYTE		m_byReadLink;
	int			m_iBC;

public:
	int PageTo(int iPage);
	int ShowMenuPage(int iPage);
	int SendData(BYTE* buffer, int len, CString strIP, UINT port);
	int PageDN();
	int PageUP();


//	int SendData(BYTE* buffer, int len, CString strIP, UINT port);
	void test1();
	test2();

	// Thread parameters
	HANDLE		m_hNetThread;
	HANDLE		m_hReadThread;
	DWORD		m_dwReadThreadID;

	// Menu text parameters
	UINT		m_uCurMenuPage;
	UINT		m_uMaxMenuPage;
	BYTE		m_sendbufMenu[BMP_MAX_SANQU * 4 * 2352 + NET_DATA_FRAME_HEADLEN];
	UINT		m_uMenuPointer;	
	UINT		m_uMenuFrames;	

	// Construct menu texts
	BOOL ChangeMenuPage(UINT uLevel, UINT uPage);
};

#endif // !defined __HAN_LCITEMNODE_H__

⌨️ 快捷键说明

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