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

📄 main.cpp

📁 数据采集
💻 CPP
📖 第 1 页 / 共 5 页
字号:


//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "main.h"
#include "draw.h"
#include "bd.h"
#include "query.h"
#include "test_com.h"
#include "password.h"
#include "del_db.h"
#include "thread.h"
#include "jin.h"
#include "print.h"
#include "cpzsetup.h"
#include "debug.h"
#include "memocpz.h"

#include <fstream.h>
#include <stdlib.h>
#include <dir.h>
#include <stdio.h>
#include <process.h>
#include <Classes.hpp>
#include <Filectrl.hpp> // DirectoryExists()

//#include <Printers.hpp>
#include "global.h"   // it is the  last one *.h file

//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"

Tform_main *form_main;
extern TGetdataThread *getDataThread;
extern TDonThread  *donThread;
extern TLwThread  *lwThread;
//extern bool flag_dong_run;
int dir_no;

int kc=0 ; // 扣除lock_weight
int cg=1;  // c_ce,g_ce
bool flag_enter_forjg=false; //for YH_JG
bool flag_hcdc_zj=false;
extern bool upload_success;

int port_bx=2; // port_保险
void CALLBACK ModemInt(int port_bx);

FILE *prn=NULL ;
extern bool is_debug;

extern bool flag_test_ch; // for test 简配车号
extern int com_jpch;      // for test 简配车号

//---------------------------------------------------------------------------
__fastcall Tform_main::Tform_main(TComponent* Owner)
        : TForm(Owner)
{
   Application->OnMessage=ProcessMessage;
}
//---------------------------------------------------------------------------

void __fastcall Tform_main::exitClick(TObject *Sender)
{
     TMsgDlgButtons buttons;
     buttons<<mbYes;
     buttons<<mbNo;
     if(MessageDlg("   退  出  吗 ?     ",mtConfirmation,buttons,0)==mrNo) return;

     if(dir->Active==true){   dir->Edit();     dir->Post();}
     if(data->Active==true){   data->Edit();    data->Post();}
     if(table_name->Active==true){   table_name->Edit();    table_name->Post();}
     if(table_send->Active==true){   table_send->Edit();    table_send->Post();}
     if(table_rec->Active==true){   table_rec->Edit();     table_rec->Post();}
     
     nosound();

     getDataThread->Terminate();
     Sleep(200);
     CloseHandle(hVxd);
     dir->Active=FALSE;
     data->Active=FALSE;
     //write_log("exit...\r\n");
     Sleep(100);
     PostQuitMessage(0);
}
//---------------------------------------------------------------------------

void __fastcall Tform_main::FormCreate(TObject *Sender)
{
  randomize();
  char title[200];

  Color=clWindow;
  AutoScroll=false;


  init_jin_mem();
  if(alloc_mem()==FALSE)
     Application->MessageBox("     内 存 不 够    ", NULL, MB_OK);
  else mem_reset();
  //if(read_bd()==FALSE) //move to gdh.cpp
  //   Application->MessageBox("     没 有 设 置 数 据    ", NULL, MB_OK);

  strcpy(title,bd.name);
  //if(bd.yh_mode>=YH_HH&&bd.yh_mode<=2*YH_HH)
  //  sprintf(title,"%s轨道衡(华横利德公司制造)",bd.name);
  //else
    sprintf(title,"%s(武汉利德公司制造)",bd.name);

  form_main->Caption=title;
  zero_jin=bd.zero;

  if(!DirectoryExists(DB))           CreateDirectory(DB,NULL);
  if(!DirectoryExists(WAVEFILE))     CreateDirectory(WAVEFILE,NULL);
  if(!DirectoryExists(LW_PATH))      CreateDirectory(LW_PATH,NULL);
  if(!DirectoryExists(BB_PATH))      CreateDirectory(BB_PATH,NULL);
  if(!DirectoryExists(CPZDATA_PATH)) CreateDirectory(CPZDATA_PATH,NULL);
  db_init();

  //debug=FALSE;
  hdc_main=GetDC(form_main->Handle);
  lock_flag=false;

  if(bd.sj_mode==SJ_JKB) TDonThread::load_vxd();
  else TDonThread::open_port();

  create_getdatathread();
  don_susp=TRUE; // suspend donthread
  create_donthread();
  create_lwthread();

  don_flag=FALSE;
  flag_collect=1; //for test_com and getdatathread
  flag_test=0;    //for test_one
  clear_input_cehao();

  OpenDialog1->InitialDir= WAVEFILE;

  flag_collect_over=false; // 保证静态缓冲区里都是有效数据
  /*
  for(int i=0;i<40;i++){ // 静态清零
     if(flag_collect_over==true){ ClearClick(NULL);break;}
     Sleep(100);
  } */
  //if(bd.if_auto==1) StartDonClick(NULL); // 第一次 dongtai need 手动
  //write_log("start...\r\n");

  if(bd.sj_mode==SJ_JKB) xps=540 ;  // 接口板每秒数据量
  else if(bd.sj_mode>10) xps=170;   // com口:19200 bps
  else xps=480;                     // com口:57600 bps

  g_hEvent=CreateEvent(NULL,false,false,NULL);
  flag_dc=false;
  if(flag_dc==false){
    Label4->Font->Color=clBlue;
    Label4->Caption="长  车";
  }else{
    Label4->Font->Color=clRed;
    Label4->Caption="短  车";
  }

  if(  bd.hq_mode==HQ_CPZ24&&
      (bd.yh_mode==YH_JAXA||bd.yh_mode==YH_JAXB||bd.yh_mode==YH_JAXC)){
    if(bd.use_status==USE_ZC){ StartDonClick(NULL);}  // 开机自动进入称重
    if(!read_cpz_setup(CPZSETUP)){
      err("read_cpz_setup failed");
      init_cpz_setup();
      write_cpz_setup(); // 写默认值
    }
    lock_flag=cpz_setup.lock_flag;
  }

  if((prn=fopen("PRN","wb"))==NULL){err("open prn failed");}

  init_jpch();
}

void __fastcall Tform_main::init_jpch()
{
  // 初始化com
  sio_close(com_jpch);
  if( sio_open(com_jpch) != SIO_OK ){
    return ;
  }

  if (sio_ioctl (com_jpch, B9600, BIT_8 |P_NONE | STOP_1 ) != SIO_OK){
    return ;
  }
}

        /*  DB9 接线:
          2 -- RXD   4 -- DTR   7 -- RTS   5 -- GND
          3 -- TXD   6 -- DSR   8 -- CTS
        */
      /*
      if( sio_open (port_bx) != SIO_OK ) err(" open port_bx failed ");
      if( sio_DTR(port_bx,0)!=SIO_OK ) err(" clr DTR failed ");
      if( sio_RTS(port_bx,1)!=SIO_OK ) err(" set RTS failed ");
      if( sio_modem_irq( port_bx, ModemInt )!= SIO_OK ) err(" set modem irq RTS failed ");
      */

void __fastcall Tform_main::init_jin_mem()
{
  jin_j[0]  =jin_j1;  jin_j[1]  =jin_j2;
  jin_j[2]  =jin_j3;  jin_j[3]  =jin_j4;
  jin_j[4]  =jin_j5;  jin_j[5]  =jin_j6;
  jin_j[6]  =jin_j7;  jin_j[7]  =jin_j8;
  jin_j[8]  =jin_j9;  jin_j[9]  =jin_j10;
  jin_j[10] =jin_j11; jin_j[11] =jin_j12;
  jin_j[12] =jin_j13; jin_j[13] =jin_j14;
  jin_j[14] =jin_j15; jin_j[15] =jin_j16;
  jin_z[0]  =jin_z1;  jin_z[1]  =jin_z2;
  jin_z[2]  =jin_z3;  jin_z[3]  =jin_z4;
  jin_z[4]  =jin_z5;  jin_z[5]  =jin_z6;
  jin_z[6]  =jin_z7;  jin_z[7]  =jin_z8;
}

void __fastcall Tform_main::write_winhandle()
{
/*  // failed
    FILE *fd;
    struct{
      HWND hwnd;
      DWORD threadid;
    }hwnd_id;

    hwnd_id.hwnd=form_main->Handle;
    hwnd_id.threadid=GetCurrentThreadId();
    if((fd=fopen(WINHANDLE,"wb"))!=NULL){
      fwrite(&hwnd_id,sizeof(hwnd_id),1,fd);
      fclose(fd);
    }
*/
}

void __fastcall Tform_main::show_mode()
{
  // 显示格式
  char str[500];

  if(bd.use_status==USE_ZC || bd.use_status==USE_JH)  Canvas->Font->Size=14;
  else                                                Canvas->Font->Size=10;
  Canvas->Font->Color=clBlue;
  if(bd.use_status==USE_ZC){Bevel3->Visible=true;Bevel4->Visible=true;}
  else{ Bevel3->Visible=false;Bevel4->Visible=false;}

  switch(bd.use_status){
    case USE_TS: //调试
      if(bd.hq_mode==HQ_CPZ){ //超偏载
        sprintf(str," 序      内1       内2       内3       内4       外1       外2       外3        外4      AD值      重量      档比     速度      偏重差     偏载率");

      }else if(bd.hq_mode==HQ_NEWCPZ||bd.hq_mode==HQ_CPZ24||bd.hq_mode==HQ_CPZGZ){
        sprintf(str," 序    内1     内2     内3     内4     外1     外2     外3     外4      前架y   后架y     AD值   总重     速度   档比(x1,x2,x3)");
      }else{
        sprintf(str,"%s%s%s","  序   AD值   重量   速度  档轴比  方向   " ,
                             "  序   AD值   重量   速度  档轴比  方向   " ,
                             "  序   AD值   重量   速度  档轴比  方向   " );
      }
      break;
    case USE_CPZJH:  //超偏载检衡
        sprintf(str," 序    内1     内2     内3     内4     外1     外2     外3     外4      前架y   后架y   整车y   前架重   后架重   偏重差   总重  速度");
        break;
    case USE_JH:
        sprintf(str,"  序        重量            速度 ");
        break;
    case USE_ZC:
    default:
        sprintf(str,"%s%s%s%s",
          "  序        重量   速度 ","  序        重量   速度 ",
          "  序        重量   速度 ","  序        重量   速度 " );
        break;
  }
  Canvas->TextOut(8,8,str);

  // 数据库data显示方式
  if((bd.hq_mode!=HQ_CPZ24 && bd.hq_mode!=HQ_CPZ )|| bd.yh_mode==YH_BJDTM) //不显示n1,n2,n3,n4,w1,w2,w3,w4
    for(int i=9;i<18;i++) grid_data->Columns->Items[i]->Visible=FALSE;
  else
    for(int i=9;i<18;i++) grid_data->Columns->Items[i]->Visible=TRUE;

  // 按钮的显示方式
  if(bd.pb_mode==PB_KP) start_jin->Visible=true; //准静态
  else start_jin->Visible=false;
  if(bd.use_status==USE_TS) del->Visible=true;  // del
  else del->Visible=false;
  if(bd.use_status==USE_TS){
    Maxmin   ->Visible=true;
    Test_one ->Visible=true;
    Draw     ->Visible=true;
    send->Visible=true;
    Qtest->Visible=true;
    OpenData->Visible=true;
    del->Visible=true;
  }else if(bd.use_status==USE_CPZJH||bd.use_status==USE_JH){
    Maxmin   ->Visible=false;
    Test_one ->Visible=false;
    Draw     ->Visible=true;
    send->Visible=false;
    Qtest->Visible=false;
    OpenData->Visible=false;
    del->Visible=false;
  }else{
    Maxmin   ->Visible=false;
    Test_one ->Visible=false;
    Draw     ->Visible=false;
    send->Visible=false;
    Qtest->Visible=false;
    OpenData->Visible=false;
    del->Visible=false;
  }

  test_com ->Visible=true;


  if(bd.yh_mode==YH_ZD) get_cehao->Visible=true;
  else get_cehao->Visible=false;

  if(bd.lw==LW_COM) Label2->Visible=true;
  else Label2->Visible=false;

  if(bd.hq_mode==HQ_BDG3) Label4->Visible=true;
  else Label4->Visible=false;

  if(bd.use_status==USE_ZC){
    dataMao->DisplayFormat="#.00";
    dataN1->DisplayFormat="#.00";
    dataN2->DisplayFormat="#.00";
    dataN3->DisplayFormat="#.00";
    dataN4->DisplayFormat="#.00";
    dataW1->DisplayFormat="#.00";
    dataW2->DisplayFormat="#.00";
    dataW3->DisplayFormat="#.00";
    dataW4->DisplayFormat="#.00";
  }else{
    dataMao->DisplayFormat="#.000";
    dataN1->DisplayFormat="#.000";
    dataN2->DisplayFormat="#.000";
    dataN3->DisplayFormat="#.000";
    dataN4->DisplayFormat="#.000";
    dataW1->DisplayFormat="#.000";
    dataW2->DisplayFormat="#.000";
    dataW3->DisplayFormat="#.000";
    dataW4->DisplayFormat="#.000";
  }
}

void __fastcall Tform_main::db_init()
{
  try{
    dir->Active = false;
    dir->DatabaseName = DB;
    dir->TableType = ttParadox;
    dir->TableName = "dir.db";
    if(dir->Exists==FALSE){  // dir.db
      create_dirdb();
      TDonThread::create_db("data");
    }
    dir->Active=TRUE;

⌨️ 快捷键说明

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