亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? comdlg.cpp

?? 實現Atmega128單片機與上位機的串口通信
?? CPP
字號:
// comDlg.cpp : implementation file
//

#include "stdafx.h"
#include "com.h"
#include "comDlg.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// CAboutDlg dialog used for App About

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()

/////////////////////////////////////////////////////////////////////////////
// CComDlg dialog

CComDlg::CComDlg(CWnd* pParent /*=NULL*/)
	: CDialog(CComDlg::IDD, pParent)
{
	//{{AFX_DATA_INIT(CComDlg)
	m_addrh = -1;
	m_addrl = -1;
	m_baud = -1;
	m_port = -1;
	m_D1h = -1;
	m_D1l = -1;
	m_D2h = -1;
	m_D2l = -1;
	m_strReceive = _T("");
	//}}AFX_DATA_INIT
	// Note that LoadIcon does not require a subsequent DestroyIcon in Win32
	m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
}

void CComDlg::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CComDlg)
	DDX_Control(pDX, IDC_COMTXD, m_filename);
	DDX_Control(pDX, IDC_COMRXD, m_nEdit);
	DDX_CBIndex(pDX, IDC_ADDRh, m_addrh);
	DDX_CBIndex(pDX, IDC_ADDRl, m_addrl);
	DDX_CBIndex(pDX, IDC_ComBaud, m_baud);
	DDX_CBIndex(pDX, IDC_ComPort, m_port);
	DDX_CBIndex(pDX, IDC_D1h, m_D1h);
	DDX_CBIndex(pDX, IDC_D1l, m_D1l);
	DDX_CBIndex(pDX, IDC_D2h, m_D2h);
	DDX_CBIndex(pDX, IDC_D2l, m_D2l);
	DDX_Control(pDX, IDC_MSCOMM, m_com);
	DDX_Text(pDX, IDC_COMRXD, m_strReceive);
	DDV_MaxChars(pDX, m_strReceive, 1024);
	//}}AFX_DATA_MAP
}

BEGIN_MESSAGE_MAP(CComDlg, CDialog)
	//{{AFX_MSG_MAP(CComDlg)
	ON_WM_SYSCOMMAND()
	ON_WM_PAINT()
	ON_WM_QUERYDRAGICON()
	ON_BN_CLICKED(IDC_OPEN, OnOpen)
	ON_BN_CLICKED(IDC_CLOSE, OnClose)
	ON_BN_CLICKED(IDC_SEND, OnSend)
	ON_BN_CLICKED(IDC_SAVE, OnSave)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CComDlg message handlers

BOOL CComDlg::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
	m_port=0;
	m_baud=0;
	m_addrh=0;
	m_addrl=0;
	m_D1h=0;
	m_D1l=0;
	m_D2h=0;
	m_D2l=0;

	text_RXD[0] = '\0';

	UpdateData(FALSE);

	return TRUE;  // return TRUE  unless you set the focus to a control
}

void CComDlg::OnSysCommand(UINT nID, LPARAM lParam)
{
	if ((nID & 0xFFF0) == IDM_ABOUTBOX)
	{
		CAboutDlg dlgAbout;
		dlgAbout.DoModal();
	}
	else
	{
		CDialog::OnSysCommand(nID, lParam);
	}
}

// If you add a minimize button to your dialog, you will need the code below
//  to draw the icon.  For MFC applications using the document/view model,
//  this is automatically done for you by the framework.

void CComDlg::OnPaint() 
{
	if (IsIconic())
	{
		CPaintDC dc(this); // device context for painting

		SendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0);

		// Center icon in client rectangle
		int cxIcon = GetSystemMetrics(SM_CXICON);
		int cyIcon = GetSystemMetrics(SM_CYICON);
		CRect rect;
		GetClientRect(&rect);
		int x = (rect.Width() - cxIcon + 1) / 2;
		int y = (rect.Height() - cyIcon + 1) / 2;

		// Draw the icon
		dc.DrawIcon(x, y, m_hIcon);
	}
	else
	{
		CDialog::OnPaint();
	}
}

// The system calls this to obtain the cursor to display while the user drags
//  the minimized window.
HCURSOR CComDlg::OnQueryDragIcon()
{
	return (HCURSOR) m_hIcon;
}

void CComDlg::OnOpen() 
{
	// TODO: Add your control notification handler code here
	UpdateData(TRUE);
	m_com.SetCommPort(m_port+1); //選擇COM1
	m_com.SetInBufferSize(1024); //設置輸入緩沖區的大小,Bytes
	m_com.SetOutBufferSize(256); //設置輸出緩沖區的大小,Bytes
	if(!m_com.GetPortOpen()) //打開串口   
		m_com.SetPortOpen(TRUE);
	m_com.SetInputMode(1); //設置輸入方式為二進制方式
	switch (m_baud)//設置波特率等參數
	{
		case 0: m_com.SetSettings("4800,s,8,1"); break;
		case 1: m_com.SetSettings("19200,s,8,1"); break;
		default :break;
	}
	m_com.SetRThreshold(1); //為1表示有一個字符引發一個事件    
	m_com.SetInputLen(0);
	GetDlgItem(IDC_CLOSE)->EnableWindow(TRUE);
	GetDlgItem(IDC_OPEN)->EnableWindow(FALSE);
	GetDlgItem(IDC_SEND)->EnableWindow(TRUE);
}

void CComDlg::OnClose() 
{
	// TODO: Add your control notification handler code here
	m_com.SetPortOpen(FALSE);
	GetDlgItem(IDC_CLOSE)->EnableWindow(FALSE);
	GetDlgItem(IDC_OPEN)->EnableWindow(TRUE);
	GetDlgItem(IDC_SEND)->EnableWindow(FALSE);
	GetDlgItem(IDC_COMRXD)->SetWindowText(0);
	GetDlgItem(IDC_COMTXD)->SetWindowText(0);
	GetDlgItem(IDC_SAVE)->EnableWindow(FALSE);
}

void CComDlg::OnSend() 
{
	// TODO: Add your control notification handler code here
	char TxData[2];
    CByteArray array; 
	CString m_strT;
	char text_TXD[10];

	UpdateData(TRUE);
//發ADDR
	m_com.SetPortOpen(FALSE);
	m_com.SetCommPort(m_port+1); //選擇COM1
	m_com.SetInBufferSize(1024); //設置輸入緩沖區的大小,Bytes
	m_com.SetOutBufferSize(256); //設置輸出緩沖區的大小,Bytes
	if(!m_com.GetPortOpen()) //打開串口   
		m_com.SetPortOpen(TRUE);
	m_com.SetInputMode(1); //設置輸入方式為二進制方式
	switch (m_baud)
	{
		case 0: m_com.SetSettings("4800,m,8,1"); break;
		case 1: m_com.SetSettings("19200,m,8,1"); break;
		default :break;
	}
	m_com.SetRThreshold(1); //為1表示有一個字符引發一個事件    
	m_com.SetInputLen(0);

	TxData[0] = m_addrh*16+m_addrl;
    array.RemoveAll();
    array.SetSize(1);
	array.SetAt(0,TxData[0]);
	m_com.SetOutput(COleVariant(array)); 
//發DATA
	m_com.SetPortOpen(FALSE);
	m_com.SetCommPort(m_port+1); //選擇COM1
	m_com.SetInBufferSize(1024); //設置輸入緩沖區的大小,Bytes
	m_com.SetOutBufferSize(256); //設置輸出緩沖區的大小,Bytes
	if(!m_com.GetPortOpen()) //打開串口   
		m_com.SetPortOpen(TRUE);
	m_com.SetInputMode(1); //設置輸入方式為二進制方式
	switch (m_baud)
	{
		case 0: m_com.SetSettings("4800,s,8,1"); break;
		case 1: m_com.SetSettings("19200,s,8,1"); break;
		default :break;
	}
	m_com.SetRThreshold(1); //為1表示有一個字符引發一個事件    
	m_com.SetInputLen(0);

	TxData[0] = m_D1h*16+m_D1l;
	TxData[1] = m_D2h*16+m_D2l;
	array.RemoveAll();
    array.SetSize(2);
	array.SetAt(0,TxData[0]);
	array.SetAt(1,TxData[1]);
	m_com.SetOutput(COleVariant(array)); 
//顯示發送數據
	if(m_addrh>9)
		text_TXD[0]=m_addrh+55;
	else
		text_TXD[0]=m_addrh+48;
	if(m_addrl>9)
		text_TXD[1]=m_addrl+55;
	else
		text_TXD[1]=m_addrl+48;
	if(m_D1h>9)
		text_TXD[2]=m_D1h+55;
	else
		text_TXD[2]=m_D1h+48;
	if(m_D1l>9)
		text_TXD[3]=m_D1l+55;
	else
		text_TXD[3]=m_D1l+48;
	if(m_D2h>9)
		text_TXD[4]=m_D2h+55;
	else
		text_TXD[4]=m_D2h+48;
	if(m_D2l>9)
		text_TXD[5]=m_D2l+55;
	else
		text_TXD[5]=m_D2l+48;

	text_TXD[6] = '\0';

	m_strT = text_TXD;
	GetDlgItem(IDC_COMTXD)->SetWindowText(m_strT);

	GetDlgItem(IDC_SAVE)->EnableWindow(TRUE);
}

void CComDlg::OnSave() 
{
	// TODO: Add your control notification handler code here
	CFile file;
	CString strName;
	CString strData;
	CTime t;
	int nLength;

	m_filename.GetWindowText(strName);
	strName += ".txt";
	nLength=m_nEdit.GetWindowTextLength();
	m_nEdit.GetWindowText(strData);
	file.Open(strName,CFile::modeCreate | CFile::modeWrite);
	file.Write(strData,nLength);
	file.Close();

	GetDlgItem(IDC_SAVE)->EnableWindow(FALSE);
}

BEGIN_EVENTSINK_MAP(CComDlg, CDialog)
    //{{AFX_EVENTSINK_MAP(CComDlg)
	ON_EVENT(CComDlg, IDC_MSCOMM, 1 /* OnComm */, OnOnCommMscomm, VTS_NONE)
	//}}AFX_EVENTSINK_MAP
END_EVENTSINK_MAP()

void CComDlg::OnOnCommMscomm() 
{
	// TODO: Add your control notification handler code here
    VARIANT vResponse;
	unsigned char *str;
//	char *str1;
//	char *str2;
    int k, nEvent, i,j;
	unsigned char high,low;
	//unsigned char bin[100];

	i=m_nEdit.GetWindowTextLength();
    nEvent = m_com.GetCommEvent();
    switch(nEvent)
	{
	case 2:  //收到大于RTHresshold個字符
		k = m_com.GetInBufferCount(); //接收到的字符數目
		
		if(k > 0)
		{
			//AfxMessageBox("have received"); 
			vResponse=m_com.GetInput(); //read
			//對數據進行其他處理 
			str = (unsigned char*)(unsigned char*) vResponse.parray->pvData;
		}   
		
		if(i>1024-(3*k))
			i=0;
		
		j = 0;
		while (j < k)
		{
			j++;
			high=*str/16;
			low=*str%16;
			if(high>9)
				text_RXD[i]=high+55;
			else
				text_RXD[i]=high+48;
				i++;
			if(low>9)
				text_RXD[i]=low+55;
			else
				text_RXD[i]=low+48;
			i++;
			text_RXD[i]=' ';
			i++;
			str++;
		}
		
		text_RXD[i] = '\0';
		m_strReceive = text_RXD;
		GetDlgItem(IDC_COMRXD)->SetWindowText(m_strReceive);
		//清除字符串中的不必要字符
		break;
	case 3:  //CTS線狀態發生了變化
		break;
	case 4:  //DSR線狀態發生了變化
		break;
	case 5:  //CD線狀態發生了變化
		break;
	case 6:  //Ring Indicator發生變化
		break;
	default:
		break;
    }    

	//m_nEdit.GetWindowTextLength();
	//AfxMessageBox("have received"); 
	//UpdateData(FALSE);
	//m_nEdit.Invalidate();		
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品女人毛片| 91精品国产欧美一区二区成人| 久久精品一区二区三区四区| av动漫一区二区| 亚洲成av人片| 日韩一级视频免费观看在线| 成人激情免费电影网址| 午夜a成v人精品| 久久在线免费观看| 91成人免费在线| 久久国产人妖系列| 中文字幕二三区不卡| 91精品婷婷国产综合久久竹菊| 国产精品自拍网站| 亚洲第一二三四区| 亚洲色图一区二区| www一区二区| 欧美图区在线视频| 成人性生交大片免费| 天堂成人国产精品一区| www日韩大片| 欧美日韩成人高清| 91小视频在线观看| 看国产成人h片视频| 亚洲精品老司机| 日本一区二区高清| 精品裸体舞一区二区三区| 欧日韩精品视频| av一本久道久久综合久久鬼色| 男人的天堂亚洲一区| 亚洲一区二区在线免费观看视频| 国产亚洲成年网址在线观看| 欧美一区二区三区免费大片| 欧美色综合影院| youjizz久久| 国产高清成人在线| 久久不见久久见免费视频7 | 自拍偷拍亚洲欧美日韩| 中文在线资源观看网站视频免费不卡| 亚洲精品一区二区三区福利| 精品国产凹凸成av人网站| 2024国产精品视频| 国产午夜精品一区二区| 国产女人水真多18毛片18精品视频| 久久久天堂av| 久久精品亚洲精品国产欧美kt∨| 久久久精品中文字幕麻豆发布| 久久精品亚洲一区二区三区浴池| 中文字幕高清不卡| 一区二区三区蜜桃网| 午夜精品成人在线| 蜜臀av性久久久久蜜臀av麻豆 | 人妖欧美一区二区| 黄页网站大全一区二区| 国产精品一区二区免费不卡 | 亚洲欧洲美洲综合色网| 亚洲婷婷综合色高清在线| 一区二区三区精品在线观看| 亚洲一区二区三区自拍| 免费在线观看一区| 国产xxx精品视频大全| 91网站最新网址| 欧美日本在线视频| 久久蜜桃av一区二区天堂| 1000部国产精品成人观看| 亚洲成人综合网站| 国产综合色视频| 99re视频精品| 日韩午夜在线播放| 中文字幕中文字幕一区二区| 亚洲国产精品一区二区www| 久久福利资源站| 99国产欧美另类久久久精品| 欧美日本乱大交xxxxx| 久久久久久久综合| 亚洲一区二区中文在线| 国产一二三精品| 色乱码一区二区三区88| 欧美大片一区二区三区| 亚洲欧美色综合| 久久精品久久精品| 91丨porny丨户外露出| 91精品国产综合久久久久久久久久| 久久久久99精品国产片| 亚洲成人av一区二区| 国产精品一级片| 欧美日韩免费一区二区三区视频| 26uuu久久综合| 亚州成人在线电影| 成人免费视频一区二区| 制服丝袜亚洲网站| 亚洲啪啪综合av一区二区三区| 麻豆精品视频在线观看免费 | 欧美日韩国产成人在线91| 国产视频一区二区三区在线观看| 亚洲成a人v欧美综合天堂下载| 国产成人综合在线播放| 4hu四虎永久在线影院成人| 国产精品久久久久久久久动漫| 麻豆国产欧美日韩综合精品二区 | 欧美精品xxxxbbbb| 中文字幕日韩欧美一区二区三区| 美女久久久精品| 欧美性猛交一区二区三区精品| 久久精品亚洲一区二区三区浴池| 日日摸夜夜添夜夜添亚洲女人| www.日韩精品| 2023国产精品自拍| 麻豆国产欧美日韩综合精品二区 | 青青草国产成人99久久| 日本韩国视频一区二区| 国产精品天美传媒沈樵| 日本成人在线不卡视频| 欧美做爰猛烈大尺度电影无法无天| 国产精品视频你懂的| 久久精工是国产品牌吗| 5566中文字幕一区二区电影| 午夜伦理一区二区| 99久久国产免费看| 国产精品狼人久久影院观看方式| 韩国av一区二区| 日韩欧美国产小视频| 日韩成人伦理电影在线观看| 欧美精品久久99| 亚洲3atv精品一区二区三区| 欧美丝袜自拍制服另类| 亚洲精品视频免费观看| 色综合中文综合网| 国产不卡视频在线播放| 欧美成人video| 国内精品免费在线观看| 欧美大肚乱孕交hd孕妇| 蜜臂av日日欢夜夜爽一区| 欧美日韩国产高清一区二区 | 在线观看欧美日本| 亚洲激情图片一区| 在线观看免费一区| 亚洲午夜三级在线| 欧美三级在线播放| 亚洲国产成人高清精品| 欧美日韩成人综合| 美女视频黄久久| 久久久久久久久久久久电影| 成人一区二区三区在线观看| 国产精品二区一区二区aⅴ污介绍| 99精品一区二区三区| 亚洲狠狠丁香婷婷综合久久久| 欧美午夜精品久久久久久孕妇 | jizzjizzjizz欧美| 中文字幕制服丝袜成人av| 91欧美一区二区| 亚洲r级在线视频| 精品区一区二区| 国产999精品久久| 亚洲欧美视频在线观看视频| 欧美三级三级三级| 欧美精品1区2区| 亚洲高清久久久| 精品少妇一区二区三区| 国产一区二区三区精品视频| 欧美激情一区二区| 欧美午夜精品久久久久久孕妇| 日韩专区中文字幕一区二区| 精品国产亚洲一区二区三区在线观看| 国产在线精品不卡| 亚洲人午夜精品天堂一二香蕉| 欧美年轻男男videosbes| 久久精品国产成人一区二区三区 | 久久精品视频网| 色婷婷综合久久久久中文一区二区 | 不卡高清视频专区| 亚洲男人天堂av| 日韩欧美亚洲另类制服综合在线 | 4hu四虎永久在线影院成人| 国内精品伊人久久久久av一坑| 国产精品初高中害羞小美女文| 欧美日韩国产综合一区二区 | 亚洲线精品一区二区三区八戒| 日韩美女天天操| av资源网一区| 日本欧美肥老太交大片| 国产精品久久久久久久岛一牛影视 | 一区二区三区 在线观看视频| 欧美一二三在线| 色综合天天综合网天天狠天天| 日韩电影免费一区| 亚洲精品国产视频| 精品国产百合女同互慰| 欧美日韩视频在线第一区| 国产成a人亚洲精| 日本色综合中文字幕| 成人欧美一区二区三区在线播放| 日韩三级电影网址| 欧美无砖专区一中文字| 国产成人在线影院| 日本aⅴ精品一区二区三区| 亚洲免费av高清| 国产欧美日韩综合精品一区二区 | 久久综合一区二区| 欧美色成人综合|