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

📄 seriesportdlg.cpp

📁 通过COM1与单片机通讯的界面程序
💻 CPP
📖 第 1 页 / 共 5 页
字号:
// 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 + -