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

📄 _main_form.cpp

📁 蓝牙芯片ZV4301的调试工具源码.做蓝牙产品时很有参考价值内部有串口的编程序源码,对有串口编成需求的同志有参考价值.
💻 CPP
📖 第 1 页 / 共 3 页
字号:
      FileName = FileName + ".txt";

  }
  else
    FileName = FileName + ".txt";

  FILE  *rf;

  rf = fopen(FileName.c_str(), "w+");
  if(rf == NULL)
  {
    Application->MessageBoxA("Open File Error!", "Error!", MB_OK);
    return;
  }

  for(int i=0;i<ZV_PRINT_LIST->Count;i++)
  {
    fputs(ZV_PRINT_LIST->Items->Strings[i].c_str(), rf);
    fputs("\r\n", rf);
  }

  fclose(rf);

}

void __fastcall TMAIN_FORM::ZV_ENGINEER_LISTClick(TObject *Sender)
{
  for(int i=0; i<ZV_ENGINEER_LIST->Items->Count; i++)
    if(EngineerCtrl[i].Panel)
      EngineerCtrl[i].Panel->Hide();

  ZV_ENGINEER_PANEL_NOOPEN->Hide();
  ZV_ENGINEER_PANEL_NONE->Show();

  if(ZV_ENGINEER_LIST->ItemIndex >= 0)
  {
    if(!EngineerCtrl[ZV_ENGINEER_LIST->ItemIndex].CanUse)
    {
      ZV_ENGINEER_PANEL_NONE->Hide();
      ZV_ENGINEER_PANEL_NOOPEN->Show();
    }
    else
    {
      if(EngineerCtrl[ZV_ENGINEER_LIST->ItemIndex].Panel)
      {
        ZV_ENGINEER_PANEL_NONE->Hide();
        EngineerCtrl[ZV_ENGINEER_LIST->ItemIndex].Panel->Caption = EngineerCtrl[ZV_ENGINEER_LIST->ItemIndex].Description;
        ZV_ENGINEER_PANNELCLEAR(EngineerCtrl[ZV_ENGINEER_LIST->ItemIndex].Type);
        EngineerCtrl[ZV_ENGINEER_LIST->ItemIndex].Panel->Show();

        if(strlen(EngineerCtrl[ZV_ENGINEER_LIST->ItemIndex].InitCmd))
          ctrlfsm.CmdConsole(EngineerCtrl[ZV_ENGINEER_LIST->ItemIndex].InitCmd);
      }
    }
  }

}
//---------------------------------------------------------------------------
void __fastcall TMAIN_FORM::ZV_ENGINEER_PANNELCLEAR(_CtrlCmd type)
{
  switch(type){
    case CC_BUILD:
      ZEP_BUILD_BUILD->Clear();
      ZEP_BUILD_SIGNATURE->Clear();
      ZEP_BUILD_COMMENT->Clear();
      ZEP_BUILD_DATE->Clear();
      ZEP_BUILD_CHIP->Clear();
      ZEP_BUILD_RFPARAM->Clear();
      ZEP_BUILD_PKG->Clear();
      ZEP_BUILD_HI->Clear();
      ZEP_BUILD_CHIPBASE->Clear();
      ZEP_BUILD_BTLLSTACK->Clear();
      break;
    case CC_SETBDADDR:
      ZEP_BDADDR_BDADDR->Clear();
      ZEP_BDADDR_TYPE->Clear();
      break;
    case CC_DEVCMD:
      ZEP_DEV_STATUS->Caption = "";
      break;
    case CC_CRYSTAL:
      ZEP_CRYSTAL_TUNNING_FLASH->Clear();
      ZEP_CRYSTAL_COUNT->Clear();
      ZEP_CRYSTAL_TUNNING_01STEP1->Enabled = true;
      ZEP_CRYSTAL_TUNNING_01STEP2->Enabled = false;
      ZEP_CRYSTAL_TUNNING_01STEP3->Enabled = false;
      ZEP_CRYSTAL_TUNNING_02STEP1->Enabled = true;
      ZEP_CRYSTAL_TUNNING_02STEP2->Enabled = false;
      ZEP_CRYSTAL_TUNNING_02STEP3->Enabled = false;
      ZEP_CRYSTAL_TUNNING_02STEP4->Enabled = false;
      ZEP_CRYSTAL_TUNNING_03STEP1->Enabled = true;
      ZEP_CRYSTAL_TUNNING_01REG->ItemIndex = 0;
      ZEP_CRYSTAL_TUNNING_02REG->ItemIndex = 0;
      break;
  };
}
//---------------------------------------------------------------------------
void __fastcall TMAIN_FORM::ZV_ENGINEER_PANEL_ResetClick(TObject *Sender)
{
  if(hcomm_sets.item || MENU_CFG_USEUSB->Checked)
  {
    if(MENU_CFG_INTEFACE_HCI->Checked)
      ctrlfsm.CmdReset();
    else
      ctrlfsm.CmdConsole("reset");
    Sleep(1500);
    ZV_ENGINEER_LISTClick(Sender);
  }
}
//---------------------------------------------------------------------------

void __fastcall TMAIN_FORM::ZV_ENGINEER_PANEL_READClick(TObject *Sender)
{
  ZV_ENGINEER_LISTClick(Sender);
}
//---------------------------------------------------------------------------

void __fastcall TMAIN_FORM::ZEP_BDADDR_SETClick(TObject *Sender)
{
  if(hcomm_sets.item  || MENU_CFG_USEUSB->Enabled)
  {
    if(ZEP_BDADDR_BDADDR->Text.Length() == 12)
    {
      unsigned __int8 bdaddr[13];
      char cmd[128];
      strcpy(bdaddr, ZEP_BDADDR_BDADDR->Text.c_str());
      for(int i=0; i<12; i++)
      {
        if((bdaddr[i] >= '0' && bdaddr[i] <= '9'))
        {
        }
        else if(bdaddr[i] >= 'a' && bdaddr[i] <= 'f')
        {
        }
        else if(bdaddr[i] >= 'A' && bdaddr[i] <= 'F' )
        {
        }
        else
        {
          Application->MessageBoxA("Format Error", "Note", MB_OK);
          return;
        }
      }
      sprintf(cmd,"setbdaddr %s", bdaddr);
      ctrlfsm.CmdConsole(cmd);
    }
    else
      Application->MessageBoxA("Format Error", "Note", MB_OK);
  }
}
//---------------------------------------------------------------------------

void __fastcall TMAIN_FORM::ZEP_DEV_SENDClick(TObject *Sender)
{
  if(hcomm_sets.item || MENU_CFG_USEUSB->Enabled)
  {
    char cmd[64];
    if(ZEP_DEV_CONTINUOUSRX->Checked)
      sprintf(cmd, "continousrx");
    else if(ZEP_DEV_CONTINUOUSTX->Checked)
      sprintf(cmd, "continoustx %d", ZEP_DEV_CONTINUOUSTX_PATTERN->ItemIndex);
    else if(ZEP_DEV_CONTINUOUSNULLTX->Checked)
      sprintf(cmd, "continousnulltx");
    else if(ZEP_DEV_PULSETX->Checked)
      sprintf(cmd, "pulsetx %d", ZEP_DEV_PULSETX_PATTERN->ItemIndex);
    else if(ZEP_DEV_TXPOW->Checked)
    {
      const char *param[] = {"up","down","min","max"};
      sprintf(cmd, "txpower %s", param[ZEP_DEV_TXPOW_PARAM->ItemIndex]);
    }
    else if(ZEP_DEV_FREQ->Checked)
      sprintf(cmd, "freq %d %d", ZEP_DEV_FREQ_RX->ItemIndex, ZEP_DEV_FREQ_TX->ItemIndex);
    ctrlfsm.CmdConsole(cmd);
    ZEP_DEV_STATUS->Caption = "";
  }
}
//---------------------------------------------------------------------------

void __fastcall TMAIN_FORM::ZEP_CRYSTAL_TUNNING_01STEP1Click(
      TObject *Sender)
{
  if(hcomm_sets.item || MENU_CFG_USEUSB->Enabled)
  {
    ctrlfsm.CmdConsole("xtaltest");
    ZEP_CRYSTAL_TUNNING_02STEP1->Enabled = false;
    ZEP_CRYSTAL_TUNNING_03STEP1->Enabled = false;
  }

}
//---------------------------------------------------------------------------

void __fastcall TMAIN_FORM::ZEP_CRYSTAL_TUNNING_02STEP1Click(
      TObject *Sender)
{
  if(hcomm_sets.item || MENU_CFG_USEUSB->Enabled)
  {
    ctrlfsm.CmdConsole("preparedut");
    ZEP_CRYSTAL_TUNNING_01STEP1->Enabled = false;
    ZEP_CRYSTAL_TUNNING_03STEP1->Enabled = false;
  }
}
//---------------------------------------------------------------------------

void __fastcall TMAIN_FORM::ZEP_CRYSTAL_TUNNING_02STEP2Click(
      TObject *Sender)
{
  if(hcomm_sets.item || MENU_CFG_USEUSB->Enabled)
  {
    ctrlfsm.CmdConsole("freq 0 0");
  }
}
//---------------------------------------------------------------------------

void __fastcall TMAIN_FORM::ZEP_CRYSTAL_TUNNING_03STEP1Click(
      TObject *Sender)
{
  if(hcomm_sets.item || MENU_CFG_USEUSB->Enabled)
  {
    ctrlfsm.CmdConsole("preparedut");
    ZEP_CRYSTAL_TUNNING_01STEP1->Enabled = false;
    ZEP_CRYSTAL_TUNNING_02STEP1->Enabled = false;
  }
}
//---------------------------------------------------------------------------

void __fastcall TMAIN_FORM::ZEP_CRYSTAL_TUNNING_01STEP2Click(
      TObject *Sender)
{
  if(hcomm_sets.item || MENU_CFG_USEUSB->Enabled)
  {
    char cmd[64];
    sprintf(cmd,"wctr %x", ZEP_CRYSTAL_TUNNING_01REG->ItemIndex);
    ctrlfsm.CmdConsole(cmd);
  }

}
//---------------------------------------------------------------------------

void __fastcall TMAIN_FORM::ZEP_CRYSTAL_TUNNING_01STEP3Click(
      TObject *Sender)
{
  if(hcomm_sets.item || MENU_CFG_USEUSB->Enabled)
  {
    char cmd[64];
    sprintf(cmd,"wctf %x", ZEP_CRYSTAL_TUNNING_01REG->ItemIndex);
    ctrlfsm.CmdConsole(cmd);
  }

}
//---------------------------------------------------------------------------

void __fastcall TMAIN_FORM::ZEP_CRYSTAL_TUNNING_02STEP3Click(
      TObject *Sender)
{
  if(hcomm_sets.item || MENU_CFG_USEUSB->Enabled)
  {
    char cmd[64];
    sprintf(cmd,"wctr %x", ZEP_CRYSTAL_TUNNING_02REG->ItemIndex);
    ctrlfsm.CmdConsole(cmd);
  }

}
//---------------------------------------------------------------------------

void __fastcall TMAIN_FORM::ZEP_CRYSTAL_TUNNING_02STEP4Click(
      TObject *Sender)
{
  if(hcomm_sets.item || MENU_CFG_USEUSB->Enabled)
  {
    char cmd[64];
    sprintf(cmd,"wctf %x", ZEP_CRYSTAL_TUNNING_02REG->ItemIndex);
    ctrlfsm.CmdConsole(cmd);
  }

}
//---------------------------------------------------------------------------
void __fastcall TMAIN_FORM::MENU_CFG_USEUSBClick(TObject *Sender)
{

  if(MENU_CFG_USEUSB->Checked)
  {
    USB_Close();
  }
  else
  {
    // Close Serial First
    if(hcomm_sets.item)
    {
      //close the port
      hcomm_sets.item->Checked = false;
      hcomm_sets.selected = 0;
      hcomm_sets.item = NULL;
      hcomm.Close();
      MAIN_FORM->Caption = "Zeevo MP Tool";
      DebugPrintf("Serial Communication Closed");
      MENU_CFG_COMM_OPEN->Checked = false;
      ZV_ENGINEER_LIST->Enabled = false;
    }
    // then open usb
    husb[0] = new TUsbDevice;

    if(ERROR_SUCCESS == husb[0]->getDeviceStatus())
    {
      MENU_CFG_USEUSB->Checked = true;
      DebugPrintf("USB Communication Opened");
      hcomm_sets.used_interface = CI_HCI;
      ctrlfsm.Interface = hcomm_sets.used_interface;
      MENU_CFG_INTEFACE_HCI->Checked = true;
      //USB_READ_TASK->Enabled = true;

      ctrlfsm.CmdReset();
      Sleep(1500);
      UsbReadThreadBegin();
      ZV_ENGINEER_DELAY->Enabled = true;
      husb[0]->OnClose = ZEEVO_OnUSBClose;
    }
    else
    {
      MENU_CFG_USEUSB->Checked = false;
    }

  }
}
//---------------------------------------------------------------------------
HANDLE     USB_THREAD;
DWORD      USB_THREAD_ID;
unsigned long __stdcall ReadUSBThread(LPVOID lpData)
{
  char buff[1024];
  memset(buff, 0, 1024);
  DWORD read_size = 0;
  while(1)
  {
    if(MAIN_FORM->husb[0]->getHCIEvent(&buff[1], read_size))
    {
      buff[0] = 0x04;
      if(read_size)
        HCOMM_ON_RECEIVE(buff, read_size+1);
    }
  }
}

void __fastcall TMAIN_FORM::UsbReadThreadBegin(void)
{
   USB_THREAD = CreateThread( (LPSECURITY_ATTRIBUTES) NULL,
                                 0,
                                 (LPTHREAD_START_ROUTINE)ReadUSBThread,
                                 NULL,
                                 0,
                                 &USB_THREAD_ID);

}

void __fastcall TMAIN_FORM::UsbReadThreadEnd(void)
{
    DWORD exitcode;
    if(GetExitCodeThread(USB_THREAD, &exitcode))
    {
      TerminateThread(USB_THREAD, exitcode);
    }
}


void __fastcall TMAIN_FORM::ZV_ENGINEER_DELAYTimer(TObject *Sender)
{
   static int count = 0;
   if(count == 5)
   {
     count = 0;
     ZV_ENGINEER_LIST->Enabled = true;
     ZV_ENGINEER_DELAY->Enabled = false;
   }
   else
     count ++;
}
//---------------------------------------------------------------------------
void ZEEVO_OnUSBClose(void)
{
  if(MAIN_FORM->husb[0])
  {
    MAIN_FORM->ZV_ENGINEER_LIST->Enabled = false;
    MAIN_FORM->MENU_CFG_USEUSB->Checked = false;
    MAIN_FORM->UsbReadThreadEnd();
    MAIN_FORM->husb[0] = NULL;
  }
}

⌨️ 快捷键说明

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