📄 seriesportdlg.cpp
字号:
// SeriesPortDlg.cpp : implementation file
//
#include "stdafx.h"
#include "SeriesPort.h"
#include "SeriesPortDlg.h"
#include "math.h"
#include "Parameters.h"
#include "sninputedit.h"
#include "afxcmn.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
#define SEND_CMD WM_USER+1001
#define ImagesMemoryLL WM_USER+1002
#define CMENUITEM1 800
//自定义一个消息
const CM_RECEIVE = WM_USER+1000;
/////////////////////////////////////////////////////////////////////////////
// CAboutDlg dialog used for App About
BYTE Y_Tail;//////全局变量自己由程序分配内存并初始化,对话框类的变量由自己写代码在初试化对话框时执行
BYTE Y_Head;
BYTE oldY_Tail;
int xp_new;
char Queue[60][20];
char infraredmodle[10];
BYTE QueueX;
//char ReceiveChar;
char ItemCode;
char *DUTdataStringPointer;
char stack[20];
long ARDnow[128];
int BuffAdd;
bool TN4write;
bool TN2write;
bool TCTwrite;
bool TN1write;
bool THwrite;
char *DUTStation;
char THmin[30][12];
char THitem[30];
char TN1min[31][12];
char TN1item[31];
int WienIndex;
long WienData[14];
int WienCyle;
BOOL WienForWri;
BOOL QC3;
CString str02;
char WaitWrite;
int th8mode;
BOOL bl;
int yntt;
CString LNwr;
long VosValue1,QdnER7,Vos_value1;
long QdnBatt30,QdnBattMed, QdnBattLow,hookio,Muxsw;
char InforBuff[21][100];
long ddata;////为什么不能加入成为全局变量呢,因为初始话的方式不同,
enum DataName {//upper case 'A' - 'Z'
TIorald ,TJambT ,QdnambTs,Ath2 ,QdnBatt,
QdnRef ,Sn_MSB ,QdnVos ,Sn_LSB ,Qdn0 ,
Zpm ,TIbbTs ,MeasHigh,FevTemp ,MeasLow,
TJbbpc ,Qdnup ,QdnR ,Null3 ,TIoral,
Kamb2 ,GNIofDU0 ,Null18 ,NotReady ,READY ,
VER ,
//'[' '\' ']' '^' '_'
DB3Pt0 ,DB3Pt1 ,DB3Pt2 ,DB3Pt3 ,GNIofB2,
//'`'
rdevGNI ,
//lower case 'a' - 'z'
THCData ,Bth ,Cth ,QambBs ,QHBs ,
TIambT ,GNCI ,Rvtco ,SdPER ,BatMed,
BatLow ,AOffset ,Trvtco ,Mcount ,CAQAfg ,
fTH8E2R ,Kamb1 ,Null0 ,PDStatus ,Null2 ,
Cupdata ,TThH ,TThL ,TJambW ,TThM ,
TbbH ,
// '{' '|' '}' '~'
DB_6 ,DB_7 ,TThuL ,Null25 ,dTJbb ,
dTJamb ,GNCIWstk ,TJbbW ,TJambWLG ,SdinearT,
QRN3725 ,Shot1st ,Shot2nd ,Shot3rd ,Shot4th ,
Shot5th ,Shot6th ,Shot7th ,Shot8th ,RVH ,
dTbbCD ,dTbbDW ,dTTh ,dTambTH8 ,dTambD ,
dTTh3 ,TJambWL2 ,dTJbbscr ,
EDN,
};//end of DataName
OVERLAPPED tOverLaped= {0}; //线程函数使用的OVERLAPPED结构
OVERLAPPED wOverLaped = {0}; //写操作使用的OVERLAPPED结构
OVERLAPPED wOverLaped2 = {0};
OVERLAPPED rOverLaped = {0}; //读操作使用的OVERLAPPED结构
BOOL IsFun = TRUE; //线程是否运行
BOOL IsStop = FALSE; //数据是否发送完毕
HANDLE hCommThread;
DWORD ThreadFunction(LPVOID pParam)
{
DWORD dwEvtMask ,dwResult;
tOverLaped.hEvent = CreateEvent(NULL,TRUE,FALSE,NULL);//创建一个事件
while (IsFun)
{
WaitCommEvent(((CSeriesPortDlg*)AfxGetMainWnd())->hCom,&dwEvtMask,&tOverLaped);//等待窗口事件
dwResult = WaitForSingleObject(tOverLaped.hEvent,1); //如果事件没有信号,延时0.1秒
switch (dwResult)
{
case WAIT_OBJECT_0: //事件对象有信号
switch (dwEvtMask)
{
case EV_RXCHAR: //接收到数据
{
//if (IsStop)//发送停止
{
//IsStop = FALSE;
//发送消息,由消息处理函数接收数据
::PostMessage(AfxGetMainWnd()->m_hWnd, CM_RECEIVE,0,(LPARAM)EV_RXCHAR);
}
break;
}
}
break;
}
}
return 0;
}
DWORD WINAPI THCTestThreadProcess(HWND hWnd)
{
while(1)
{
while(xp_new!=VER ) // Wait for pcq on line
{
Sleep(5); //延时1ms
}
WienForWri=FALSE;
for(WienIndex=0;WienIndex<14;WienIndex++)
WienData[WienIndex]=0;
if((ARDnow[VER]>0x1500)&&(ARDnow[VER]<0x1599))//TN4
{ char chs1[10]="TN4";
int i;
for(i=0;i<10;i++)
infraredmodle[i]=chs1[i];
TN4write=TRUE;
}
else if( (ARDnow[VER]>0x1300)&&(ARDnow[VER]<0x1399) )//TCT
{
char chs2[10]="TCT";
int i;
for(i=0;i<10;i++)
infraredmodle[i]=chs2[i];
TCTwrite=TRUE;
}
else if( (ARDnow[VER]>0x1100)&&(ARDnow[VER]<0x1199) )//TN1
{
char chs3[10]="TN1";
int i;
for(i=0;i<10;i++)
infraredmodle[i]=chs3[i];
TN1write=TRUE;
}
else if( (ARDnow[VER]>0x0150)&&(ARDnow[VER]<0x0169) )//TH
{
char chs4[10]="TH";
int i;
for(i=0;i<10;i++)
infraredmodle[i]=chs4[i];
THwrite=TRUE;
}
else if( (ARDnow[VER]>0x1200)&&(ARDnow[VER]<0x1299) )//TN2
{
char chs4[10]="TN2";
int i;
for(i=0;i<10;i++)
infraredmodle[i]=chs4[i];
TN2write=TRUE;
}
else;
::PostMessage(hWnd,WM_PAINT,0,0);
Sleep(3000);
if((ARDnow[VER]>0x1500)&&(ARDnow[VER]<0x1599))
{ Sleep(1000);
WienIndex=0;
ddata=0x0000;
WienCyle=0;
while((WienData[0]==0)&&(WienCyle<5))
{
::PostMessage(hWnd,SEND_CMD,'p',0);
Sleep(500);
WienCyle++;
}
for(int ilinwiency=0;ilinwiency<13;ilinwiency++)
{WienIndex++;
ddata++;
WienCyle=0;
while( ( (WienData[WienIndex]==0)||(WienData[WienIndex]==WienData[WienIndex-1]))&&(WienCyle<3))
{::PostMessage(hWnd,SEND_CMD,'p',0);
Sleep(450);
WienCyle++;
}
}
WienForWri=TRUE;
}
}
return TRUE;
}
class CAboutDlg : public CDialog
{
public:
CAboutDlg();
// Dialog Data
//{{AFX_DATA(CAboutDlg)
enum { IDD = IDD_ABOUTBOX };
//}}AFX_DATA
// ClassWizard generated virtual function overrides
//{{AFX_VIRTUAL(CAboutDlg)
protected:
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support
//}}AFX_VIRTUAL
// Implementation
protected:
//{{AFX_MSG(CAboutDlg)
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
};
CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD)
{
//{{AFX_DATA_INIT(CAboutDlg)
//}}AFX_DATA_INIT
}
void CAboutDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CAboutDlg)
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CAboutDlg, CDialog)
//{{AFX_MSG_MAP(CAboutDlg)
// No message handlers
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CSeriesPortDlg dialog
CSeriesPortDlg::CSeriesPortDlg(CWnd* pParent /*=NULL*/)
: CDialog(CSeriesPortDlg::IDD, pParent)
{
//{{AFX_DATA_INIT(CSeriesPortDlg)
m_item = _T("");
m_dutdata = _T("");
//}}AFX_DATA_INIT
// Note that LoadIcon does not require a subsequent DestroyIcon in Win32
m_hIcon = AfxGetApp()->LoadIcon(IDI_ICON1);
}
void CSeriesPortDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CSeriesPortDlg)
DDX_Control(pDX, IDC_EDIT9, m_edt9);
DDX_Control(pDX, IDC_EDIT8, m_edt8);
DDX_Control(pDX, IDC_EDIT7, m_edt7);
DDX_Control(pDX, IDC_EDIT6, m_edt6);
DDX_Control(pDX, IDC_EDIT5, m_edt5);
DDX_Control(pDX, IDC_EDIT4, m_edt4);
DDX_Control(pDX, IDC_EDIT3, m_edt3);
DDX_Control(pDX, IDC_EDIT2, m_edt2);
DDX_Control(pDX, IDC_LIST1, m_lis);
DDX_Text(pDX, IDC_item, m_item);
DDV_MaxChars(pDX, m_item, 1);
DDX_Text(pDX, IDC_DUTDATA, m_dutdata);
DDV_MaxChars(pDX, m_dutdata, 4);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CSeriesPortDlg, CDialog)
//{{AFX_MSG_MAP(CSeriesPortDlg)
ON_WM_SYSCOMMAND()
ON_WM_PAINT()
ON_MESSAGE(CM_RECEIVE,OnRecieveData)
ON_WM_QUERYDRAGICON()
ON_WM_TIMER()
ON_WM_CANCELMODE()
ON_MESSAGE(ImagesMemoryLL,IsoImages)
ON_BN_CLICKED(IDC_BUTTON6, OnButton6)
ON_WM_LBUTTONUP()
ON_WM_LBUTTONDOWN()
ON_WM_SIZE()
ON_WM_KEYDOWN()
ON_BN_CLICKED(IDC_BUTTON7, OnHUBPIN15)
ON_WM_CLOSE()
ON_BN_CLICKED(IDC_RADIO1, OnTH)
ON_BN_CLICKED(IDC_RADIO2, OnTN1)
ON_BN_CLICKED(IDC_RADIO3, OnTN4)
ON_BN_CLICKED(IDC_RADIO4, OnTN2)
ON_BN_CLICKED(IDC_RADIO5, OnTCT)
ON_COMMAND(ID_255, On255)
ON_COMMAND(ID_27v, On27v)
ON_COMMAND(ID_3v, On3v)
ON_COMMAND(ID_ring, Onring)
ON_COMMAND(ID_3sec_once, On3seconce)
ON_COMMAND(ID_pin15, Onpin15)
ON_COMMAND(ID_report, Onreport)
ON_BN_CLICKED(IDC_BUTTON1, OnShowDemen)
ON_BN_CLICKED(IDC_BUTTON2, OnAddCotent)
ON_WM_MOUSEMOVE()
ON_MESSAGE(SEND_CMD, OnSendCmd)
ON_WM_GETMINMAXINFO()
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CSeriesPortDlg message handlers
BOOL CSeriesPortDlg::OnInitDialog()
{
CDialog::OnInitDialog();
// Add "About..." menu item to system menu.
// IDM_ABOUTBOX must be in the system command range.
ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);
ASSERT(IDM_ABOUTBOX < 0xF000);
CMenu* pSysMenu = GetSystemMenu(FALSE);
if (pSysMenu != NULL)
{
CString strAboutMenu;
strAboutMenu.LoadString(IDS_ABOUTBOX);
if (!strAboutMenu.IsEmpty())
{
pSysMenu->AppendMenu(MF_SEPARATOR);
pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);
}
}
// Set the icon for this dialog. The framework does this automatically
// when the application's main window is not a dialog
SetIcon(m_hIcon, TRUE); // Set big icon
SetIcon(m_hIcon, FALSE); // Set small icon
// TODO: Add extra initialization here
ii9=0;
ItemCode='e';
shift=0;
((CProgressCtrl*)GetDlgItem(IDC_PROGRESS1))->SetRange32(1,200);
((CProgressCtrl*)GetDlgItem(IDC_PROGRESS1))->SetStep(1);
((CProgressCtrl*)GetDlgItem(IDC_PROGRESS1))->SetPos(90);
((CSliderCtrl*)GetDlgItem(IDC_SLIDER1))->SetRange(1,100);
((CSliderCtrl*)GetDlgItem(IDC_SLIDER1))->SetTicFreq(1);
// m_edt2.SetBkColor(RGB(127,127,127));
// m_mouse=10;
//AfxInitRichEdit();
//CRichEditCtrl pmyRichEditCtrl;
CRichEditCtrl* pmyRichEditCtrl = new CRichEditCtrl();
pmyRichEditCtrl->Create(
WS_CHILD|WS_VISIBLE|ES_MULTILINE|ES_AUTOVSCROLL|ES_WANTRETURN,
CRect(200,300,350,380), this,IDC_RICHEDIT2 );
cMenu.CreatePopupMenu();
cMenu.AppendMenu(MF_STRING, ID_APP_EXIT, (LPCTSTR)"E&xit");
DUTStation="1108TN105";
DUTStation="1505TN400";
DUTStation="1305TCT22";
DUTStation="1212TN205";
DUTStation="0168TH";
CHARFORMAT cf;
((CRichEditCtrl*)GetDlgItem(IDC_RICHEDIT2))->GetSelectionCharFormat(cf);
strcpy(cf.szFaceName ,_T("宋体"));//设置字体
//cf.cbSize=2;
cf.dwMask|=CFM_BOLD;
cf.dwEffects|=CFE_BOLD;//设置粗体,取消用cf.dwEffects&=~CFE_BOLD;
cf.dwMask|=CFM_COLOR;
cf.crTextColor = RGB(0,255,0);//设置颜色
((CRichEditCtrl*)GetDlgItem(IDC_RICHEDIT2))->SetSelectionCharFormat(cf);
CTime time=CTime::GetCurrentTime();
CString ddtime= time.Format("%m/%d %H:%M %S");
UINT array[5];
for(int is=0;is<5;is++)
array[is]=100+is;
m_statusbar.Create(this);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -