www.pudn.com > HDTV_play_flash.rar > Unit1.cpp


//--------------------------------------------------------------------------- 
 
#include  
#pragma hdrstop 
 
#include  
 
#include "serialset.h" 
#include "about.h"               
#include "chipset.h" 
#include "Unit6.h" 
 
#include "Unit1.h" 
#include "Unit5.h" 
//--------------------------------------------------------------------------- 
#pragma package(smart_init) 
#pragma link "Unit22" 
#pragma link "Unit33"                     
#pragma link "Unit44" 
#pragma resource "*.dfm" 
TForm1 *Form1; 
 
 
//---------------- wan ---------------- 
/* 
系统状态:关机;频道转换状态;TV 2个;文本编辑; 
按键: 
 
*/ 
//--------------------------------------------------------------------------- 
#define  Key_0     0 
#define  Key_1     1 
#define  Key_2     2 
#define  Key_3     3 
#define  Key_4     4 
#define  Key_5     5 
#define  Key_6     6 
#define  Key_7     7 
#define  Key_8     8 
#define  Key_9     9 
#define  Key_s     11   // 键'/' 
#define  Key_chup  12 
#define  Key_chdn  13 
#define  Key_vlup  14 
#define  Key_vldn  15 
#define  Key_email 16 
#define  Key_OK    17 
#define  Key_ESC   18 
#define  Key_TVAV  19 
#define  Key_16_9  20 
#define  Key_disp  21 
#define  Key_m     22 
#define  Key_rand  23 
 
#define  Key_POWER 50 
 
#define  Key_Aa    100		//可以传上来,也可以不 
#define  Key_./.   		//标点符号,不要传上来 
#define  Key_E/C                //中文、英文切换,不要传上来 
 
 
//--------------------------------------------------------------------------- 
 
void __fastcall TForm1::Button1Click(TObject *Sender) //power 按钮 
{ 
 
if(!POWER) 
 { 
  POWER = true; 
/* 
  Frame41->Show();         //开机 
  Frame31->Hide(); 
  Frame21->Hide(); 
  Frame41->ShockwaveFlash1->Play(); 
  TVAV=true; */ 
  PwrLed->Brush->Color=clRed;   
  TVAV = TVAV ? false : true; 
  MAIL = true;       //让 Button2Click()处理; 
  Button2Click(this); 
 } 
 else        //关机 
 { 
  PwrLed->Brush->Color=clBlack; 
  POWER = false; 
  Frame21->Shape1->Brush->Color=clBlack; 
  Frame21->Label1->Visible=false; 
  Frame21->Show(); 
  Frame31->Hide(); 
  Frame41->Hide(); 
  Frame41->ShockwaveFlash1->Stop(); 
 } 
} 
//--------------------------------------------------------------------------- 
void __fastcall TForm1::Button2Click(TObject *Sender)  //TVAV 按钮 
{ 
 if(!POWER) return; 
 if(MAIL) { 
    MAIL = false; 
    SendModeSW(); 
 }    
 
 if(TVAV)          //1=TV电视 
  { 
    TVAV=false;    //goto AV 
    Frame21->Shape1->Brush->Color=clBlue; 
    Frame21->Label1->Visible=true; //"AV" 
    Frame21->Show(); 
    Frame31->Hide(); 
    Frame41->Hide(); 
    Frame41->ShockwaveFlash1->Stop(); 
  } 
 else 
 { 
    TVAV=true;    //goto TV 
    Frame41->Show(); 
    Frame21->Hide(); 
    Frame31->Hide(); 
    CHANNEL--; 
//  if(CHANNEL==0) 
    Button3Click(this);  //+ 
    Frame41->ShockwaveFlash1->Play(); 
 } 
} 
//--------------------------------------------------------------------------- 
void __fastcall TForm1::Button7Click(TObject *Sender) //email按钮 
{ 
  if(!POWER) return; 
  if(!MAIL) { 
    //TVAV=false;    //goto TV 
    MAIL = true; 
    Frame21->Hide(); 
    Frame31->Show(); 
    Frame41->Hide(); 
    Frame41->ShockwaveFlash1->Stop(); 
    Frame31->Label1->Width = 160; 
    Frame31->Memo2->Clear(); 
    Frame31->Panel1->Visible=false; 
    SendModeSW(); 
  } 
  else { 
    //MAIL =false;             =1,让 Button2Click() 处理 
    TVAV = TVAV ? false : true; 
    Button2Click(this);        //TV/AV 键 有发SendModeSW(); 
  } 
} 
 
//--------------------------------------------------------------------------- 
 
char SWF_FILE[][10]= {"1", "2","3","4","5","6", 
                      "7","8","9","10","11", 
                      "12","13" 
                     }; 
 
void __fastcall TForm1::Button3Click(TObject *Sender)  //频道+ 
{ 
 if(!POWER || !TVAV || MAIL) return; 
 Frame41->Show(); 
 Frame21->Hide(); 
 Frame31->Hide(); 
 CHANNEL++; 
 if(CHANNEL>12) CHANNEL=1; 
 Frame41->Label1->Caption = "CCTV-"+IntToStr(CHANNEL); 
 
 AnsiString ttt =  ExtractFilePath(ParamStr(0))+AnsiString(SWF_FILE[CHANNEL-1]) + ".swf"; 
 Frame41->ShockwaveFlash1->Movie = ttt ; 
} 
 
/*怎样用 REGSVR32 注册控件? 
 
注册控件可用: 
                    AnsiString aa; 
                    aa=ExtractFilePath(ParamStr(0)); 
                    aa=" /s "+aa+"控件文件名"; 
                    char* bb=aa.c_str(); 
                    ShellExecute(Application->Handle,"open","regsvr32.exe",bb, NULL,SW_HIDE); 
*/ 
//--------------------------------------------------------------------------- 
void __fastcall TForm1::Button4Click(TObject *Sender) //频道- 
{ 
 if(!POWER || !TVAV || MAIL) return; 
 Frame41->Show(); 
 Frame21->Hide(); 
 Frame31->Hide(); 
 CHANNEL--; 
 if(CHANNEL==0) CHANNEL=12; 
 Frame41->Label1->Caption = "CCTV-"+IntToStr(CHANNEL); 
 AnsiString ttt =  ExtractFilePath(ParamStr(0))+AnsiString(SWF_FILE[CHANNEL-1]) + ".swf"; 
 Frame41->ShockwaveFlash1->Movie = ttt ;  //"d:\\040.swf";  黑屏 , 用41,非frame4 
} 
//--------------------------------------------------------------------------- 
void __fastcall TForm1::Button5Click(TObject *Sender)  //音量+ 
{ 
 if(!POWER || MAIL) return; 
  VOLUME++; 
  if(VOLUME>100)  VOLUME=100; 
  Frame41->ProgressBar1->Position=VOLUME; 
  Frame41->Label2->Caption="音量:" + IntToStr(VOLUME); 
 
  SHortDispCnt=150;  //1.5s 
  Frame41->Label2->Visible = true; 
  Frame41->Label2->Width=65; 
  Frame41->ProgressBar1->Visible = true; 
} 
 
//--------------------------------------------------------------------------- 
void __fastcall TForm1::Button6Click(TObject *Sender)  //音量- 
{ 
  if(!POWER || MAIL) return; 
  if(VOLUME>0)  VOLUME--; 
  Frame41->ProgressBar1->Position=VOLUME; 
  Frame41->Label2->Caption="音量:" + IntToStr(VOLUME); 
 
  SHortDispCnt=150;  //1.5s 
  Frame41->Label2->Visible = true; 
  Frame41->Label2->Width=65; 
  Frame41->ProgressBar1->Visible = true; 
} 
 
//--------------------------------------------------------------------------- 
void __fastcall TForm1::FormCreate(TObject *Sender) 
{ 
 
  POWER = false; 
  Frame21->Show(); 
  Frame31->Hide(); 
  Frame41->Hide(); 
 
  TVAV = 1; 
 
//变量的初始化 在构造函数中 
} 
//--------------------------------------------------------------------------- 
 
void __fastcall TForm1::N3Click(TObject *Sender) 
{ 
  Close(); 
} 
//--------------------------------------------------------------------------- 
//---------以下从老的来------------------------------------------------------------------ 
 
TCriticalSection* GlobalCrit1 = new TCriticalSection();  //临界信号量 
 
void __fastcall TForm1::N7Click(TObject *Sender)    //菜单:关于 
{ 
  Form3->ShowModal(); 
} 
//--------------------------------------------------------------------------- 
 
void __fastcall TForm1::N6Click(TObject *Sender)   //菜单:芯片设置 
{ 
    if(!bConnected) 
  { 
     ShowMessage("请先打开串口!"); 
     return; 
  } 
 
  int j= Form4->ShowModal();    //芯片设置 
  if(j==mrCancel) return; 
 
  IICAddr = Form4->Edit5->Text.ToInt(); 
  InpMax  = Form4->Edit4->Text.ToInt(); 
  InpMin  = Form4->Edit3->Text.ToInt(); 
  InpDefault  = Form4->Edit2->Text.ToInt(); 
 
  unsigned  char * ttt = new char[100]; 
  unsigned  char * hhh = new char[100]; 
  strcpy(ttt,Form4->Edit1->Text.c_str());    //串 
  ConvertToHEX(ttt,hhh); 
  CustomCode[0]=hhh[0]; 
  CustomCode[1]=hhh[1]; 
  CustomCode[1]=hhh[2];          //3字节 custom code 
 
  //设置custom code 
  unsigned char crc=0; 
  ttt[0]=0x68; 
  ttt[1]=1; 
  ttt[2]=4; 
  ttt[3]=0; 
  ttt[4]=CustomCode[0]; 
  ttt[5]=CustomCode[1]; 
  ttt[6]=CustomCode[2]; 
  for(j=0;j<7;j++) crc += ttt[j]; 
  ttt[7]=crc; 
  BeginSend(ttt,8); 
  //设置option 
  //while(LedDlyCnt){}; 
  Sleep(30); 
  ttt[1]=2; 
  ttt[2]=5; 
  ttt[4]=1;    //option3 
  ttt[5]=5;    //option2 
  ttt[6]=0;    //option1 
  ttt[7]=0; 
  crc=0; 
  for(j=0;j<8;j++) crc += ttt[j]; 
  ttt[8]=crc; 
  BeginSend(ttt,9); 
  //设置送回数据的格式 
  //  while(LedDlyCnt){}; 
  Sleep(30); 
  ttt[1]=3; 
  ttt[2]=2; 
  ttt[4]=1;    //1=键值 
  crc=0; 
  for(j=0;j<5;j++) crc += ttt[j]; 
  ttt[5]=crc; 
  BeginSend(ttt,6); 
  Sleep(30); 
  if(DataWindow->Visible==true) { 
    DataWindow->Memo2->Lines->Add("[  初始化结束  ]"); 
  } 
 
  delete [] ttt; 
  delete [] hhh; 
} 
//--------------------------------------------------------------------------- 
 
void __fastcall TForm1::N2Click(TObject *Sender)  //菜单:显示数据监控窗口 
{ 
 if(N2->Checked) 
  { 
    N2->Checked=false; 
    DataWindow->Hide(); 
  } 
 else 
  { 
     N2->Checked=true; 
     DataWindow->Show(); 
  }    
} 
//--------------------------------------------------------------------------- 
 
void __fastcall TForm1::Timer1Timer(TObject *Sender) 
{ 
   if(MouseDownCnt){ 
      MouseDownCnt--; 
      if(!MouseDownCnt){ 
         MouseDownCnt=6; 
         if(VUP) Button5Click(this);     //+ 
         else    Button6Click(this);     //- 
      } 
   } 
 
   if(SHortDispCnt) {                   //音量 
     SHortDispCnt--; 
     if(!SHortDispCnt){ 
      Frame41->Label2->Visible = false; 
      Frame41->ProgressBar1->Visible = false; 
     } 
    } 
 
 
   if(LedDlyCnt) 
    { LedDlyCnt--;    //LED 灯用 
      if(!LedDlyCnt) 
            Shape1->Brush->Color=clBtnText; 
    } 
 
   if(!ComStatus) return; 
 
   if(ReceWaitCnt)              //发命令后10ms内返回aa;以后可以直接接收! 
     { 
       ReceWaitCnt--; 
       if(!ReceWaitCnt) 
        { 
         CharWaitCnt=0; 
         ComStatus=0x13; 
         ReceOperation(0);      //发送后等待返回,超时,高4bit是错误号 
        } 
     } 
 
   if(CharWaitCnt)              //总有用! 
    { 
     CharWaitCnt--; 
     if(!CharWaitCnt) 
      { 
       ReceWaitCnt=0; 
       ComStatus=0x23;         //接收字符间间隔,超时 
       ReceOperation(0); 
      } 
    } 
 
} 
//--------------------------------------------------------------------------- 
void  SerialEventManager(uint32 object, uint32 event) 
{ 
    char *buffer; 
    int   size; 
    Tserial_event *com; 
 
    com = (Tserial_event *) object; 
    if (com!=0) 
    { 
        switch(event) 
        { 
            case  SERIAL_CONNECTED  : 
                                        //ShowMessage("Connected ! \n"); 
                                        break; 
            case  SERIAL_DISCONNECTED  : 
                                        //ShowMessage("Disonnected ! \n"); 
                                        break; 
            case  SERIAL_DATA_SENT  : 
                                        //ShowMessage("Data sent ! \n"); 
                                        Form1->bSendEnd=true; 
                                        Form1->ReceOperation(0); 
                                        break; 
            case  SERIAL_RING       : 
                                        //ShowMessage("DRING ! \n"); 
                                        break; 
            case  SERIAL_CD_ON      : 
                                        //ShowMessage("Carrier Detected ! \n"); 
                                        break; 
            case  SERIAL_CD_OFF     : 
                                        //ShowMessage("No more carrier ! \n"); 
                                        break; 
            case  SERIAL_DATA_ARRIVAL  : 
                                        Form1->ReceOperation0(com); 
                                        com->dataHasBeenRead(); 
                                        break; 
        } 
    } 
} 
 
//===========================================================================// 
void  TForm1::ReceOperation0(Tserial_event *com_arg) 
{ 
     Tserial_event *com = com_arg; 
 
     int size     = com->getDataInSize(); 
     char* buffer = com->getDataInBuffer(); 
     buffer[size] = 0; 
     //-----datawindow 显示 --------// 
    if(DataWindow->Visible==true) { 
      DataWindow->Edit1->Text=AnsiString(ReceByteNum); 
 
      int m = DataWindow->Memo1->Lines->Text.Length(); 
      char CharB[3]={0,0,0};        //wan串口 也有此问题!!! 
      DispToHex(buffer,1,CharB); 
      if(m >=1500) 
        { DataWindow->Memo1->Clear(); 
          m = 0; 
        } 
/*      if(m) 
      { 
       AnsiString kkk = DataWindow->Memo1->Lines->Text;      //必须有kkk中转 
       if(kkk[m]>=0x20)                                      //最后的字符不是\n\r 
          m=1024*1000; 
 
       kkk.Insert(AnsiString(CharB),m-1); 
       DataWindow->Memo1->Lines->Text = kkk;                 //vc王朝例子:.SetSel,ReplaceSel 
       } 
      else DataWindow->Memo1->Lines->Add(AnsiString(CharB)); 
*/ 
      DataWindow->Memo1->Lines->Text = DataWindow->Memo1->Lines->Text + AnsiString(CharB); 
     } 
    //-------------------------------// 
 
     ReceByteNum++; 
     ReceOperation(buffer[0]);             //命令发送后的接收处理,一个字节产生一次中断 
     LedDlyCnt = 30;                       //每接收一个字符,绿一下,可能浪费时间! 
     Shape1->Brush->Color=clGreen; 
} 
 
//===========================================================================// 
void TForm1::DispToHex(unsigned char* Ibuff,int lenH,unsigned char* Obuff) 
{ 
   char ttt[5]; 
   for(int i=0;iVisible==true) { 
   DataWindow->Edit2->Text=AnsiString(SendByteNum); 
 
  char * HEXBUFF = new char [SLength*3+6];  // 往datawindow 数据记录窗口显示 
  memset(HEXBUFF,0,SLength*3+6); 
  DispToHex(SBuff,SLength,HEXBUFF); 
  DataWindow->Memo2->Lines->Add(HEXBUFF); 
  delete [] HEXBUFF; 
} 
 
 
  Timer1->Enabled=false; 
  bSendEnd = false; 
  CharWaitCnt=0; 
  ReceWaitCnt=0; 
  Timer1->Enabled=true; 
  char* ttt = (char*) SBuff; 
  My_serial->sendData(ttt,SLength); //启动发送 
  LedDlyCnt = 30;  //200ms 
  Shape1->Brush->Color=clRed; 
} 
 
//===========================================================================// 
void TForm1::ReceOperation(unsigned char RByte) 
  //call it when: receive a char, timeout error found,Send order end 
  //use: ComStatus: low 4bit is status; high 4bit is error code. 
{ 
   GlobalCrit1->Enter(); 
   unsigned char RRR = RByte; 
   Timer1->Enabled = false; 
   switch (ComStatus & 0xf) 
    { 
      case 0:                   //Ready wait,do nothing 
             break; 
      case 1:                   //Wait send end 
             if(bSendEnd) 
                { 
                 ComStatus=2; 
                 ReceWaitCnt=IntervalWaitRece/10; 
                } 
             break; 
      case 2:                   //wait receive 
             ReceWaitCnt = 0; 
             CharWaitCnt=IntervalWaitChar/10; 
             if(ReceCnt>30) {Init_Rece(); ComStatus=0x33; if(DataWindow->Visible==true) DataWindow->Memo1->Lines->Add("");break;}  //too long 
             if(ReceCnt==0 && RRR==0xaa) {Init_Rece();  break;} 
             if(ReceCnt==0 && RRR!=0x68) break; 
             ReceBuff[ReceCnt++]= RRR; 
             if(ReceCnt>=3) 
              { 
                 if(ReceCnt > (ReceBuff[2]+3)) //长度结束 
                 { unsigned char  sum=0; 
                   for(int i=0;iVisible==true) DataWindow->Memo1->Lines->Add(""); 
                      } 
                    else 
                      {ComStatus=0x43;   //CRC错误结束 
                       CharWaitCnt=0; 
                       Init_Rece(); 
                       if(DataWindow->Visible==true) DataWindow->Memo1->Lines->Add(""); 
                      } 
                 } 
              } 
             break; 
      case 3:                   //end,(可能有错结束),Let caller deal with 
             Init_Rece(); 
             if(DataWindow->Visible==true) DataWindow->Memo1->Lines->Add(""); 
             break;             //ComStatus 高4bit是错误指示 
    }//switch 
 
  Timer1->Enabled = true; 
  GlobalCrit1->Leave(); 
} 
//68h  3  2  I2C  format  CRC 
 
//unsigned char ReadBlkNum[20]={0x91,5,2,3,4,5,6,0x68, 0x25,3,00,00,00,00,0x16}; 
//unsigned char ReadCurve [20]={0x91,5,2,3,4,5,6,0x68, 0x28,2,00,00,00,0x16}; 
//--------------------------------------------------------------------- 
__fastcall TForm1::TForm1(TComponent *AOwner) 
	: TForm(AOwner) //构造函数初始化 
{ 
  My_serial=0; 
  bConnected=false; 
 
  LedDlyCnt=0;        //30*10ms 
 
  ReceByteNum=0; 
  SendByteNum=0;    //总的数 
 
  Init_Rece();      //通信状态 
 
  CustomCode[0]=0; 
  CustomCode[1]=0xff; 
  InpDefault = 1; 
  InpMin = 0; 
  InpMax = 6; 
  IICAddr = 0; 
 
  DataFmt=2;        //0=文本;1=键值;  2=遥控码 
 
  PwrLed->Brush->Color=clBlack; 
  CHANNEL = 1 ; 
  VOLUME = 50; 
  MouseDownCnt = 0; 
 
  MAIL=false;   
 
  AnsiString aa;                      //注册flash.ocx 
  aa=ExtractFilePath(ParamStr(0)); 
  aa=" /s "+aa+"flash.ocx"; 
  char* bb=aa.c_str(); 
  ShellExecute(Application->Handle,"open","regsvr32.exe",bb, NULL,SW_HIDE); 
} 
 
//--------------------------------------------------------------------- 
__fastcall TForm1::~TForm1() 
{ 
     if(My_serial && bConnected) 
      {My_serial->disconnect(); 
       delete My_serial; 
       My_serial=0; 
       bConnected=false; 
      } 
    Timer1->Enabled=false; 
} 
 
//--------------------------------------------------------------------- 
 
int TForm1::ConvertToHEX(unsigned char* InBuff,unsigned char* OutBuff) 
{ 
      unsigned char  z1=0xff,z2=0xff,z3=0xff; 
      int len1,len2=0; 
      len1=strlen(InBuff); 
      for(int i=0;i='0') || (z3<='F'&&z3>='A') ) 
          { 
             z3 -= '0'; 
             if(z3>9) z3 -= 7;  //A-F 
             if(z1==0xff) z1=z3; 
             else 
              {  z2=z3; 
                 OutBuff[len2++]=z1*16+z2; 
                 z1=z2=z3=0xff; 
              } 
          } 
          else if (z1!=0xff || z2!=0xff)   //遇到空格,等 
          { 
             if(z2!=0xff) OutBuff[len2++]=z1*16+z2; 
             else         OutBuff[len2++]=z1; 
             z1=z2=z3=0xff; 
          } 
          if(len2>1023) len2--; 
      } //for 
 
      if (z1!=0xff || z2!=0xff)            //也许有落下的单个 
         { 
             if(z2!=0xff) OutBuff[len2++]=z1*16+z2; 
             else         OutBuff[len2++]=z1; 
         } 
      return(len2); 
} 
//--------------------------------------------------------------------------- 
void __fastcall TForm1::N5Click(TObject *Sender)  //菜单:串口设置 
{ 
   int j = Form2->ShowModal(); 
   AnsiString ttt; 
 
   if (j==mrOk) 
  { 
        ttt=Form2->ComboBox1->Items->Strings[Form2->ComboBox1->ItemIndex]; 
        strcpy(port_num,ttt.c_str());   //com1,com2,... 
 
        ttt=Form2->ComboBox2->Items->Strings[Form2->ComboBox2->ItemIndex]; 
        baudrate=ttt.ToInt(); 
 
        parity=Form2->ComboBox3->ItemIndex; 
 
        ttt=Form2->ComboBox4->Items->Strings[Form2->ComboBox4->ItemIndex]; 
        bitsize=ttt.ToInt();  //7 or 8 
 
        stopbitsize=1;  //always 1 
 
        if(bConnected && My_serial) My_serial->disconnect(); //解除原来的连接 
        if(My_serial)  //My_serial->disconnect();    //== 
           { delete My_serial; My_serial=0;}         //== 
        bConnected =false;                           //== 
        My_serial = new Tserial_event();             //== 
        if(!My_serial)                               //== 
          { 
           ShowMessage("串口打开错误!"); 
           return; 
          } 
        My_serial->setManager(SerialEventManager);  //== 
 
        int erreur = My_serial->connect(port_num,baudrate, parity, bitsize, false); 
        if (!erreur) 
         { 
            bConnected=true; 
            My_serial->setRxSize(1);        // 
/*            My_serial->sendData( "start",5);   //wan 9/13 
            DispInMemo(RichEdit1,"start",0); 
            SendByteNum += 5; 
*/       } 
        else  ShowMessage("串口打开错误!!"); 
   } 
   if(j==mrAbort && bConnected)          //断开 
   { 
     My_serial->disconnect(); 
     { delete  My_serial; My_serial=0;} 
       bConnected=false; 
     } 
 
   if (j==mrYes ||j==mrOk ) 
   {//毫秒 
    IntervalWaitChar=Form2->Edit2->Text.ToInt();   //最大字符间间隔 
    IntervalWaitRece=Form2->Edit3->Text.ToInt();   //发送后等待回应 
   } 
 
   if(bConnected) 
   { 
      ttt="Connected:    "; 
      ttt += "Baud=" + IntToStr(baudrate); 
      ttt += "    Port="; 
      ttt += port_num; 
      DataWindow->StatusBar->SimpleText = ttt; 
   } 
   else 
   { 
       DataWindow->StatusBar->SimpleText = "Serial port not Connected yet."; 
   } 
} 
//--------------------------------------------------------------------- 
void TForm1::Init_Rece() 
{ 
    ReceCnt = 0; 
    ReceWaitCnt = 0; 
    CharWaitCnt = 0; 
    ComStatus = 2; 
} 
 
//--------------------------------------------------------------------- 
void __fastcall TForm1::Button5MouseDown(TObject *Sender, 
      TMouseButton Button, TShiftState Shift, int X, int Y) 
{ 
   VUP=true; 
   Timer1->Enabled=false; 
   MouseDownCnt=10; 
   Timer1->Enabled=true; 
} 
//--------------------------------------------------------------------------- 
 
void __fastcall TForm1::Button5MouseUp(TObject *Sender, 
      TMouseButton Button, TShiftState Shift, int X, int Y) 
{ 
   Timer1->Enabled=false; 
   MouseDownCnt=0; 
   Timer1->Enabled=true; 
} 
//--------------------------------------------------------------------------- 
 
void __fastcall TForm1::Button6MouseDown(TObject *Sender, 
      TMouseButton Button, TShiftState Shift, int X, int Y) 
{ 
   VUP=false; 
   Timer1->Enabled=false; 
   MouseDownCnt=10; 
   Timer1->Enabled=true; 
} 
//--------------------------------------------------------------------------- 
 
void __fastcall TForm1::Button6MouseUp(TObject *Sender, 
      TMouseButton Button, TShiftState Shift, int X, int Y) 
{ 
   Timer1->Enabled=false; 
   MouseDownCnt=0; 
   Timer1->Enabled=true; 
} 
//--------------------------------------------------------------------------- 
void  TForm1::SendModeSW() 
{ 
  unsigned  char * ttt = new char[100]; 
  unsigned char crc=0,j=0; 
   
  ttt[0]=0x68; 
  ttt[1]=3; 
  ttt[2]=2; 
  ttt[3]=0; 
 
  if(MAIL) ttt[4]=0; //文本 
  else     ttt[4]=1; //键值 
 
  for(j=0;j<5;j++) crc += ttt[j]; 
  ttt[5]=crc; 
  BeginSend(ttt,6); 
  Sleep(30); 
 
  if(DataWindow->Visible==true) { 
    if(MAIL) DataWindow->Memo2->Lines->Add("[  要求文本  ]"); 
    else     DataWindow->Memo2->Lines->Add("[  要求键值  ]");   
  } 
 
  delete [] ttt; 
} 
//--------------------------------------------------------------------------- 
void  TForm1::RByte_DEAL ()    //处理各种接收的数据 
{ 
  unsigned char m,i,j,k; 
  int OrderLen = ReceLength;                           //拷贝过来再处理 
  char * OrderStr = new char[50]; 
  char lineb[100],xuhaob[5],hanzib[3],*ppp; 
 
 
  memset(OrderStr,0,45); 
  memcpy(OrderStr,ReceBuff,45); 
  //--crc OK --// 
  switch(OrderStr[1]) 
   { case  4:     //键值处理--------------------------------------------------- 
     case  9: 
                m = OrderStr[4]; 
                if(DataWindow->Visible==true) { //显示键值 
                   DataWindow->Memo1->Lines->Add("[ 键值: "+IntToStr(m)+"  ]"); 
                } 
              if(!MAIL){ 
                if(m>=Key_0 && m<=Key_9WXYZ){       //数字键处理 
                    if(m==Key_0) CHANNEL=10; 
                    else CHANNEL = m; 
                    CHANNEL--; 
                    Button3Click(this);  //+ 
                } 
 
                if(m==Key_chup)  Button3Click(this);  //+ 
                if(m==Key_chdn)  Button4Click(this);  //- 
                if(m==Key_vlup)  Button5Click(this);  //+ vol 
                if(m==Key_vldn)  Button6Click(this);  //- vol 
                if(m==Key_TVAV)  Button2Click(this);  //tvav 
                if(m==Key_email) Button7Click(this);  //email 
                if(m==Key_POWER) Button1Click(this);  //power 
               }  
                break; 
 
     case  5:     //码值------------------------------------------------------ 
                 break; 
 
     case  6:     //单字节文本------------------------------------------------ 
                OrderStr[5]=0; 
                if(DataWindow->Visible==true) { 
                   DataWindow->Memo1->Lines->Add("[ ASCII: "+AnsiString(OrderStr+4)+"  ]"); 
                } 
                if(!MAIL) break; 
                Frame31->Panel1->Visible=false; 
                if( Frame31->Memo1->Lines->Text.Length()>750) 
                           Frame31->Memo1->Clear(); 
                Frame31->Memo1->Lines->Text = Frame31->Memo1->Lines->Text + 
                                              AnsiString(OrderStr+4); 
                break; 
 
     case  7:     //双字节文本------------------------------------------------ 
                OrderStr[6]=0; 
                if(DataWindow->Visible==true) { 
                   DataWindow->Memo1->Lines->Add("[ 汉字: "+AnsiString(OrderStr+4)+"  ]"); 
                } 
 
                if(!MAIL) break; 
                Frame31->Panel1->Visible=false; 
                if( Frame31->Memo1->Lines->Text.Length()>750) 
                           Frame31->Memo1->Clear(); 
                Frame31->Memo1->Lines->Text = Frame31->Memo1->Lines->Text+ 
                                              AnsiString(OrderStr+4); 
                break; 
 
     case  8:     //文本形式下的重码信息-------------------------------------- 
                if(DataWindow->Visible==true) { 
                   DataWindow->Memo1->Lines->Add("[  汉字重码  ]"); 
                } 
 
                if(!MAIL) break; 
                Frame31->Panel1->Visible=true; 
                Frame31->Memo2->Clear(); 
                ppp = OrderStr+4; 
 
                for(k=0;k<3;k++){ 
                 memset(lineb,0,100); 
                 m = *ppp;         //n1 
                 j= 0; 
 
                 if(m){ 
                   for(i=0;iMemo2->Lines->Add(AnsiString(lineb)); 
                   else     Frame31->Memo2->Lines->Text = Frame31->Memo2->Lines->Text 
                                             + AnsiString(lineb); 
                 } //if 
                   ppp++; 
                }//for (3) 
 
                 break; 
 
//     case  9:     //文本形式下的功能键值-------------------------------------- 
//                 break; 
 
 
     case  10:    //当前的输入法---------------------------------------------- 
                if(DataWindow->Visible==true) { 
                   DataWindow->Memo1->Lines->Add("[  输入法  ]"); 
                } 
 
                 if(!MAIL) break; 
                 m = OrderStr[4]; 
                 if(m==0) Frame31->Label1->Caption = "目前输入法:英文大写"; 
                 if(m==1) Frame31->Label1->Caption = "目前输入法:英文小写"; 
                 if(m==2) Frame31->Label1->Caption = "目前输入法:拼音"; 
                 if(m==3) Frame31->Label1->Caption = "目前输入法:笔划"; 
                 if(m==4) Frame31->Label1->Caption = "目前输入法:数字"; 
                 if(m==5) Frame31->Label1->Caption = "目前输入法:符号"; 
                 Frame31->Label1->Width = 160; 
                 break; 
 
     default:    break; 
   } //of switch 
 
 
  delete [] OrderStr; 
} 
//---------------------------------------------------------------------