📄 lcitemnode.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 + -