1. 程式人生 > >halcon/mfc利用serialport類進行串列埠通訊

halcon/mfc利用serialport類進行串列埠通訊

1.引言

串列埠通訊用mscomm控制元件在x64平臺下報錯,只能在Win32平臺下工作,所以想著換平臺,下載32位的halcon進行安裝。安裝時,不用解除安裝64位,安裝時提示安裝外掛,會自動檢測到runtimeclass x86,安裝好後相當於只是多了一個lib中的x86sse2-win32資料夾
這裡寫圖片描述

2、應用程式無法正常啟動(0xc000007b)

安裝好,設定好路徑後,編譯成功,執行報錯。查詢後發現這是由於64位系統中,32位halcon庫不能正常載入造成的。一般的32位程式都可以在64位系統中執行,halcon庫比較特殊。

採用x64平臺編譯,並使用64位halcon庫,可以解決該問題。

3.選擇serialport類

於是只能放棄mscomm控制元件,選擇serialport類進行串列埠通訊。

4.程式碼出錯修改

網上下載一個例項,裡面開啟後得到的是一個控制檯程式,在MFC對話方塊中把原始檔和標頭檔案新增進工程,編譯時報錯,後來把出錯程式碼段進行修改。

bool CSerialPort::InitPort( UINT portNo /*= 1*/,UINT baud /*= CBR_9600*/,char parity /*= 'N'*/,
                            UINT databits /*= 8*/, UINT stopsbits /*= 1*/
,DWORD dwCommEvents /*= EV_RXCHAR*/ ) { DCB dcb; if ( bIsSuccess ) { // 將ANSI字串轉換為UNICODE字串 //DWORD dwNum = MultiByteToWideChar (CP_ACP, 0, szDCBparam, -1, NULL, 0); //WCHAR *pwText = new WCHAR[dwNum]; //if (!MultiByteToWideChar (CP_ACP, 0, szDCBparam, -1, pwText, dwNum))
//{ // bIsSuccess = TRUE; //} ///** 獲取當前串列埠配置引數,並且構造串列埠DCB引數 */ bIsSuccess = GetCommState(m_hComm, &dcb) && BuildCommDCB(szDCBparam, &dcb); /** 開啟RTS flow控制 */ dcb.fRtsControl = RTS_CONTROL_ENABLE; /** 釋放記憶體空間 */ //delete [] pwText; } }

5.相關程式碼

首先新增標頭檔案和類定義

#include "serialport.h"  

CSerialPort mySerialPort;

初始化串列埠,傳送資料


void IO::OnBnClicked初始化()
{
    // TODO:  在此新增控制元件通知處理程式程式碼
    //unsigned char* pData = "1234567";
    if (!mySerialPort.InitPort(3, CBR_9600, 'N', 8U, 1U, EV_RXCHAR)) MessageBox("initPort fail !");
    if (!mySerialPort.OpenListenThread()) MessageBox("OpenListenThread fail !");

    /*mySerialPort.InitPort(3, CBR_9600, 'N', 8U, 1U, EV_RXCHAR);
    mySerialPort.OpenListenThread();*/
    unsigned char outString[] = "F88F0280808000002000";
    mySerialPort.WriteData(outString, 21);
    //mySerialPort.ClosePort();
    //mySerialPort.CloseListenTread();
}


void IO::OnBnClicked傳送()
{
    // TODO:  在此新增控制元件通知處理程式程式碼
    unsigned char outString[] = "F88F0280808000002000";
    mySerialPort.WriteData(outString, 21);

}

6.執行成功

點擊發送按鈕可以一直髮送資料

相關推薦

halcon/mfc利用serialport進行串列通訊

1.引言 串列埠通訊用mscomm控制元件在x64平臺下報錯,只能在Win32平臺下工作,所以想著換平臺,下載32位的halcon進行安裝。安裝時,不用解除安裝64位,安裝時提示安裝外掛,會自動檢測到runtimeclass x86,安裝好後相當於只是多了一個

在C#中使用SerialPort實現串列通訊

表1                                                      SerialPort類的常用屬性 名  稱 說  明 BaseStream 獲取 SerialPort 物件的基礎 Stream 物件 Ba

利用WinAPI進行串列通訊程式設計

轉載於:https://blog.csdn.net/L_Andy/article/details/51131232 轉載只為了方便查詢,希望大家從源連線進行檢視! 總結來看串列埠通訊原理,(也可以說大多數通訊原理也是如此)。 通訊首先要有個通訊,可以簡單的把通訊看成一個

利用boost庫網路通訊協議進行串列通訊的問題

菜狗玩ROS最近遇到一個問題,叫做error: stray ‘\200’ in program,除錯多次發現是因為貼上網頁程式碼,導致帶有中文字元,將報錯的一行程式碼前的空格刪除再調整格式,便可以通過編譯。 然而問題又來啦,執行生成的讀取串列埠的節點時,遇到這樣一個問題:

LabVIEW學習筆記(十一)——利用VISA進行串列通訊

前言:        在1993年,為了確保多廠商的儀器具有協同工作的能力以及降低包含了多廠商儀器的完整測試系統的開發時間,NI 聯合許多大公司開發出來了虛擬儀器軟體架構 ( Virtual Instruments Software Architecture,VISA )。

怎麼用VB.NET進行串列通訊-四川成都軟體開發定製APP程式設計

文-沙鷗-2018.11.9     1,前言 前一段時間一位認識的朋友找到我,知道我這裡是做工控自動化、電路板、控制器、儀器儀表、軟體APP開發定製的(業務QQ2531263726),於是跟我說要把一個指紋模組和他們公司的觸控式螢幕結合起來做成一個系統,發來了資料看了一下,

wince模擬器與PC進行串列通訊設定步驟(附詳細步驟圖解)

在網上一搜,關於wince模擬器與PC進行串列埠通訊的介紹很多,也有人說模擬器不能虛擬串列埠的,也有說必須用串列埠連線線把USB口和串列埠連線起來的,說法可謂種類繁多。結合搜尋到的資訊,我進行多次試驗,最終實現了WINCE模擬器串列埠與PC串列埠工具之間的通訊。現介紹一下步驟

虛擬串列完成主機與vmware下虛擬機器進行串列通訊

所需軟體: vspd :虛擬串列埠建立軟體。 xcom V2.0:串列埠助手。 詳細步驟如下: 1,下載及安裝vspd軟體,建立虛擬串列埠COM1,COM2。 2,開啟vmware在設定中新增物理

使用51微控制器採用中斷方式進行串列通訊的學習記錄:

使用51微控制器進行串列埠通訊的學習記錄之中斷方式: 1.51微控制器採用中斷方式的串列埠通訊過程及程式分析: 所謂中斷方式,就是串列埠收/發標志位出發中斷後,在中斷中執行既定操作,可通過函式呼叫來實現。 接收資料時 等待中斷->然後在中斷中接收資料 傳送資料時 傳

MFC之路 第二節 串列通訊

因為我自己正好也在為專案寫一個控制軟體,所以自己做到哪就寫到哪吧。專案中軟體與下位機之間通過232串列埠進行資料通訊,所以今天打算實現串列埠通訊的相關功能,那麼就隨著我一步一步地來完成串列埠通訊功能吧。為了全面的學習串列埠通訊的各種功能,我們一起完成一個常用的串列埠通訊助手

Python使用pyserial進行串列通訊

安裝pyserial pip install pyserial 檢視可用的埠 # coding:utf-8 import serial.tools.list_ports plist = list(serial.tools.list_ports.co

C#做一個簡單的進行串列通訊的上位機

1、上位機與下位機         上位機相當於一個軟體系統,可以用於接收資料、控制資料。即可以對接收到的資料直接傳送操控命令來操作資料。上位機可以接收下位機的訊號。下位機是一個控制器,是直接控制裝置獲取裝置狀況的計算機。上位機發出的命令首先給下位機,下位機再根據此命令解釋成相應時序訊號直接控制相應裝置。下

VSPD9.0基礎 建立一對互聯的虛擬串列,進行串列通訊的測試

    VSPD : Virtual Serial Port Driver 9.0       OS : Windows 10

[MFC]使用強大的第三方串列 CSerialPort

原創文章,歡迎轉載。轉載請註明:轉載自 祥的部落格 最近要寫一個串列埠程式,用MFC自帶COM元件的效果很差(一次接收一個緩衝區的資料,沒辦法像寫嵌入式程式那樣單位元組就能觸發中斷接收那樣),所以進行了一些研究,發現了一個 第三方串列埠類 很強大,效果

C#串列通訊程式SerialPort

上篇文章主要是關於串列埠通訊中微控制器部分的程式編寫。在實際應用中,常常還要有上位機的配合才能完成工作。寫串列埠通訊的上位機程式,常常應用的程式語言有C++,VB,C#等。VB沒有學過,C++編寫視窗應用程式接觸也不多,暑假自己看了一些C#的書,也有了一些瞭解,所以就用C#

MFC利用MSComm控制元件實現串列通訊的例子

第一步:建工程 第二步:設定基本對話方塊 第三步:設定串列埠ID號 第四步:設定串列埠引數選項 第五步:設定其他控制元件ID號 第六步:新增串列埠控制元件 project->

MFC串列通訊例項

參考MSComm控制元件的用法和函式說明。裡面講得也算詳細了。所以這裡直接獻上原始碼示例。 github下載地址 CSDN下載地址 效果如圖: 需要注意的是: 1.如果想同時recv/send,則必須加個執行緒。 2.奇偶校驗中,引數設定為,無(n),偶校驗(o),

Keil C51 中使用Printf()進行串列輸出。

       如何使用printf在串列埠顯示資訊,有兩種辦法,因為在keil C51中 printf函式是呼叫putchar進行資料傳送的,而putchar應該是先判斷TI是否為1,不為1則等待為1。 如果為1則清0,然後送出一個字元。因此如果你直

WIN7 64位系統 CDC 虛擬串列驅動無法安裝的解決辦法(2)

(1)最近用STM32使用USB——CDC類出現驅動安裝失敗的情況。 百度了一些網頁,方法很多,大多數是按照如下步驟處理: 首先,確保C:\Windows\System32\drivers\usbser.sys檔案存在; 其次,修改C:\Windows\inf\mdmcpq.inf檔

WIN7 64位系統 CDC 虛擬串列驅動無法安裝的解決辦法

最近用STM32使用USB——CDC類出現驅動安裝失敗的情況。 百度了一些網頁,方法很多,但是我這裡按如下步驟處理: 首先,確保C:\Windows\System32\drivers\usbser.sys檔案存在; 其次,修改C:\Windows\inf\mdmcpq.inf檔案;