趣味新聞網 logo



RS232利用程式語言C/C++ OR VC++讀取資料 - 趣味新聞網


RS232利用程式語言C/C++ OR VC++讀取資料


發表日期 2008-07-23T23:58:49+08:00



     趣味新聞網記者特別報導 : RS232利用程式語言C/C++ OR VC++讀取或輸送資料不知道誰有這方麵的經驗或資料可供學習?PRINT PORT 介麵 也是可以[ 本帖最後由 degit 於 2008-7-26 00:39 .....


     RS232利用程式語言C/C++ OR VC++讀取或輸送資料
不知道誰有這方麵的經驗或資料可供學習?
PRINT PORT 介麵 也是可以

[ 本帖最後由 degit 於 2008-7-26 00:39 編輯 ]

分享鏈接



看最新新聞就到趣味新聞網
quweinews.com
立刻按 ctrl+D收藏本頁
你會得到大驚喜!!

提供你在VC++ 底下使用 rs232的方法

#include "stdafx.h"
#include "rs232.h"

HANDLE  hComm[12];

int init_rs232(int com, int baud, int parity, int databits, int stopbits) //初始化comport
{
        HANDLE hCom;
        DCB dcb;
        COMMTIMEOUTS timeouts;

        if (com == 1)
                hCom = CreateFile(_T("COM1"),GENERIC_READ | GENERIC_WRITE,0,0,OPEN_EXISTING,0,0);
        else if (com == 2)
                hCom = CreateFile(_T("COM2"),GENERIC_READ | GENERIC_WRITE,0,0,OPEN_EXISTING,0,0);
        else if (com == 3)
                hCom = CreateFile(_T("COM3"),GENERIC_READ | GENERIC_WRITE,0,0,OPEN_EXISTING,0,0);
        else if (com == 4)
                hCom = CreateFile(_T("COM4"),GENERIC_READ | GENERIC_WRITE,0,0,OPEN_EXISTING,0,0);
        else if (com == 5)
                hCom = CreateFile(_T("COM5"),GENERIC_READ | GENERIC_WRITE,0,0,OPEN_EXISTING,0,0);
        else if (com == 6)
                hCom = CreateFile(_T("COM6"),GENERIC_READ | GENERIC_WRITE,0,0,OPEN_EXISTING,0,0);
        else if (com == 7)
                hCom = CreateFile(_T("COM7"),GENERIC_READ | GENERIC_WRITE,0,0,OPEN_EXISTING,0,0);
        else if (com == 8)
                hCom = CreateFile(_T("COM8"),GENERIC_READ | GENERIC_WRITE,0,0,OPEN_EXISTING,0,0);
        else if (com == 9)
                hCom = CreateFile(_T("COM9"),GENERIC_READ | GENERIC_WRITE,0,0,OPEN_EXISTING,0,0);
        else if (com == 10)
                hCom = CreateFile(_T("\\.\COM10"),GENERIC_READ | GENERIC_WRITE,0,0,OPEN_EXISTING,0,0);
        else if (com == 11)
                hCom = CreateFile(_T("\\.\COM11"),GENERIC_READ | GENERIC_WRITE,0,0,OPEN_EXISTING,0,0);
        else if (com == 12)
                hCom = CreateFile(_T("\\.\COM12"),GENERIC_READ | GENERIC_WRITE,0,0,OPEN_EXISTING,0,0);
        if (hCom == INVALID_HANDLE_VALUE)  {
                                printf("RS232 error : CreateFile COM%d",com);
//            exit(-1);
        }
        hComm[com-1] = hCom;

        SetupComm(hCom,1024,1024);              // setup size of input/output buffer

        FillMemory(&dcb,sizeof(dcb),0);
        dcb.DCBlength = sizeof(dcb);
        dcb.BaudRate = baud;
        dcb.fBinary = TRUE;
//      dcb.fDtrControl = DTR_CONTROL_ENABLE;
        dcb.fDtrControl = DTR_CONTROL_DISABLE;
//      dcb.fRtsControl = RTS_CONTROL_TOGGLE; // the RTS line is high if chars are available for transmission
        dcb.fRtsControl = RTS_CONTROL_DISABLE;
        dcb.ByteSize = databits;
        dcb.Parity = parity;
        dcb.StopBits = stopbits;
        if (!SetCommState(hCom,&dcb)) {
                printf("RS232 error : SetCommState");
                exit(-1);
        }
        timeouts.ReadIntervalTimeout = MAXDWORD;
        timeouts.ReadTotalTimeoutMultiplier = MAXDWORD;
//      timeouts.ReadIntervalTimeout = 1;
//      timeouts.ReadTotalTimeoutMultiplier = 1;
        timeouts.ReadTotalTimeoutConstant = 10;         // in milliseconds
        timeouts.WriteTotalTimeoutMultiplier = 0;
        timeouts.WriteTotalTimeoutConstant = 0;
//      timeouts.WriteTotalTimeoutMultiplier = 1;
//      timeouts.WriteTotalTimeoutConstant = 10;
        if (!SetCommTimeouts(hCom,&timeouts)) {
                printf("RS232 error : SetCommTimeouts");
                exit(-1);
        }

        if (!PurgeComm(hCom,PURGE_TXCLEAR | PURGE_RXCLEAR)) {
                printf("RS232 error : PurgeComm");
                exit(-1);
        }
        return(0);
}

void reset_rs232(int com)  
{
        CloseHandle(hComm[com-1]);
}

void out_com(int com, char c)    //送出一个字元到comport
{
        DWORD chars;

    --com;
        WriteFile(hComm[com],&c,1,&chars,NULL);
}

void out_coms(int com, char *s, int len)   //送出一个字串到comport

{
        DWORD chars;

    --com;
        WriteFile(hComm[com],s,len,&chars,NULL);
}

int in_com(int com, char *ch, int milisec)    \接收一个字元      milisec  等待的时间
{
   int timeout;
   DWORD chars;

    --com;
    for (timeout=milisec; timeout>=0; timeout--) {
                ReadFile(hComm[com],ch,1,&chars,NULL);
      if (chars == 1)
                        return(1);
    }
    *ch = 0;
    return (0);
}

int in_coms(int com, char *s, int milisec, int len)
{
   int timeout;
   DWORD chars;

   --com;
   for (timeout=milisec; timeout>=0; timeout--) {
           ReadFile(hComm[com],s,len,&chars,NULL);
      if (chars > 0)
                        s[chars] = 0x00;
                        return(chars);
    }
    *s = 0;
    return (0);
}

提供给你参考 基本上RS232的运用 就是利用open file的方法来传送接受资料
但是在dos底下方法有些不同

非常感谢分享
我一直在书局想找这类的书籍,
不过好像程式设计课本都没写这类的功能使用,
不知楼上是在哪里得到这类的资料或资讯来学习
或是修什么课程等等 ..这类的资料 ~

用uart或是rs232当作关键字搜寻可以找到蛮多相关的参考资料.

这个要放在哪个档案底下呢?

你可以到书局 去找一本文魁出的 " c++builder 与 rs-232 串列通讯控制"的书
内文就有好用的范例及元件可以用 , 供你参考.

妳说的那个~

c++builder 与 rs-232 串列通讯控制

这个可以用再 vc++ 上面吗?

需要转换
重点是观念问题
其实他们运作方式就是开档案方法一样

就像开档, 只是档名变成 \.COMxx 而已, 不难啦

" c++builder 与 rs-232 串列通讯控制"
那本书绝版了

请问各位大大:
int init_rs232(int com, int baud, int parity, int databits, int stopbits)
函式里的参数
直要怎么给阿
我给了出现错误讯息error C2078: too many initializers
请各位大大指教!!

你也可以使用winio这一个open source code的lib来读写

读写的方式跟在dos下蛮类似的

可以直接控制记忆体

win2000 winXP2都可以跑

vc++也可以使用

不过在debug mode下资料读取会有问题

所以需要一些技巧才debug


tag

相关新聞

RaySource - FS2YOU 這大陸軟體好用嗎?

    我有時會上大陸網站下載A片, 可是須要安裝RaySource這軟體, 不知道這好用嗎? 之前我裝過BT, 但是有問題, 我就把BT刪除, 希望RaySource能用. [ 本帖最後由 ss055045 於 2008-7-20 17:09 編.......


Real Player可以看,Media Classic 不行?

    我想這是跟我之前的問題不同,所以我另發一帖 我裝瞭Real Player,也裝瞭 K-lite Pack 4.3.1 我現在有一個*.rmvb的檔案,在Real Player 下麵看都完全正常。 可是當我用Media Classic 看的時候會變的.......


RealPlayer 11 繁體中文正式版+全功能補丁

    RealPlayer 11 繁體中文正式版+全功能補丁 RealPlayer 11 繁體中文正式版+全功能補丁【軟體名稱】:RealPlayer 11 【軟體分類】:播放程式 / 媒體播放   【軟體性質】:免費軟體 【檔案大小】:14.0 MB.......


Regular Expression 新手入門

    Regular Expression (正規錶示式,簡寫 regexp或regex) 是一個字串,可用來描述字串的模式, 例如我要錶達「兩個英文大寫字母」,那麼 regexp 就是 [A-Z]{2}。 而使用這個 regexp ,就可以在一個字串內找.......


RiS獨傢綫上簡報:Yahoo! & Flex / Flash琴瑟共鳴

RiS獨傢綫上簡報:Yahoo! & Flex / Flash琴瑟共鳴

    很榮幸前天受Yahoo!之邀到颱灣分公司做Tech talk的分享,這次演講的主題著重在Yahoo!開發平颱與Flex / AIR上的整閤、善用與延伸,以取得更好的「社交機會(yahoo)」與「使用者豐富體驗(Flex/AIR/Flash)」。 看大傢.......


S0NY老掉牙機型DSC-w50

    請問各前輩那裏可以找到S0NY老掉牙機型DSC-w50 的使用說明書? 這種機型有防手震功能嗎?.......


SBLIVE EAX環境設定檔

    請問*.aup(EAX環境設定檔)單個可另外儲存及讀入,若是一大堆*.aup 可否有方法快速另存及讀入呢? [ 本帖最後由 ss055045 於 2008-8-10 21:40 編輯 ].......


SD卡會突然讀不到

    最近我的iPAQ(2490)運作到一半,SD卡就突然失蹤讀不到,請問應該如何處理 謝謝.......


SD記憶卡格式化

    不好意思 又要再一次麻煩各位大大 想請問一下 SD卡格式化還可不可以救的迴來 如果可以請給我軟體名稱 謝謝 我不知道適不適閤在這開這一帖 如果不行,麻煩版大幫我刪除.......


SERVER資料備份

    請問各位大大,是否有辦法將兩颱SERVER資料同步,例如A和B兩颱server 在A齣問題時,能夠馬上使用B繼續工作。 [ 本帖最後由 小善人 於 2008-7-16 09:43 編輯 ].......


SONY H係列

    哪一颱評價比較好??白天和夜晚的拍攝品質如何??還是有推薦哪颱??.......


SONY T70照相問題

    各位數位相機討論區的大大好 小弟第一次來到此地 有些有關相機的問題想請問 問題如下 前幾日  小弟去畢業旅行   理所當然 帶著心愛的相機一起齣遠門 可是在國道上照著照著 後來不知為何   照齣來的這片  都會很白 還會齣現橫條紋 還過度.......


SONY NWZ-A726

    小弟想買這一型號的mp3 但不知音質如何,有買瞭的大大可以分享一下嗎?.......


SONY T10

    我的相機T10好像照起來都很模糊耶!! 賣相機的說有防手震!但是好像動一下就很模糊! 快門也很慢按下去約1.5秒纔有動作..這正常嗎? 整個感覺真差!@@比一些啊撒晡魯的相機還濫! 是我調整的問題.還是相機本身問題? 我買迴來都沒去調過耶! 是不是.......


SONY T700...

    問題:           1.T700可以跟Canon這牌子哪係列型號一樣或差不多.           2.我要自拍還有齣去玩拍風景而已要買很好的麻?           3.預算一萬二以內.           4.颱南哪有好店傢.    .......


SONY W300

    最近要齣國唸書想買一颱相機,以前完全沒用過相機,上次看到W300的廣告打得很兇,後來直覺就是它瞭。 請問W300會很操作復雜嗎﹖和T300哪個較好?(價錢一樣) 我朋友都叫我買T300。.......


SONY a350的鏡頭選擇

    想要請各位給個建議 想要買鏡頭 目前是a350+18-70KIT 因同時考慮到未來陸續購入的鏡頭 目前的想法是 1.16-105或A18當作旅遊鏡 2.28mm-50mm的定焦鏡 3.A16 4.再一支長焦段的鏡頭 5........


SONY α900 全片幅單眼相機 齣來瞭

SONY α900 全片幅單眼相機 齣來瞭

    SONY α900 特點     * 搭載全片幅,24.6MP的CMOS影像感測器, 最大成像 6048 x 4032 像素     * 使用 DT 鏡頭時,會改為 1.5X 焦長轉換,像素值則是變成 11MP     * 雙核心,來自Sony的D.......


SONY 數位相機問題

    想請問各位大大,SONY T500 & T700差在那裏 幫同事問,同事說兩颱纔差一張小朋友 我想請問兩颱的差異差在那裏 能越詳細越好 p.s同事是女的,相機的用途不外乎就是齣去玩拍,自拍那一方麵的,他不考慮彆牌的 謝謝!!!.......


SONY 的W170...

    最近想買颱數位相機    我覺得SONY 的W170還不錯 但有看到有些對SONY不好的評價   讓我有點不知道要選哪傢的~ (SONY真的像有些人說的那麼差嗎?? 恩.....還有  網路上有人說SONY除高價位的相機外   其他很多都是大陸.......


SONYF707超怪的對焦[快門按一半]就關機

    我的F707超怪的對焦[快門按一半]就關機 超奇怪 好像不是電池問題耶= = ''' 是哪裏齣問題瞭呢????.......


SONY數位相機~3台比較

    T200,T300,T70這三颱 哪一颱比較OK阿??? 聽說觸碰螢幕比較耗電是嗎??? 還有啥優缺點阿??.......


SONY液晶電視的型號疑問求助!

    SONY 52吋液晶電視X係列最近正在考慮敗傢中.可是............. 突然發現型號有3種 1.52X2500 2.52X5000 3.52X1-R 有哪位大哥可以說明一下這三種型號到底有什麼不一樣?哪一種是公司貨哪一種是水貨?還有功.......


SONY的W300問題

    請問各位有買過SONY-W係列的大大... 小弟最近想要購入W300,可惜對相機是一知半解 想瞭解W300好用嗎?拍起來如何呢?? 或是有大大可以推薦不用錯的相機... 先謝謝啦.......


SONY的W300跟W170差彆在哪裏?

    這兩款是姐妹機嗎? 目前我隻知道...差彆有畫數,廣角.. 還有彆的差彆嗎? 可否達人可以分析一下... 因為已經確定要買2颱其中一颱嚕..^^.......


SP 570uz 說明書

    由於買的是平行輸入貨 網路上隻找到 簡體版的說明書 小弟很笨 有些看不懂 所以想問問有人可以提供 繁體說明書嗎? 謝謝 [ 本帖最後由 KOF5002001 於 2008-7-14 01:12 編輯 ].......


SP2跟SP3的問題

    請問各位大大       我的電腦剛重灌完,如果我直接安裝SP3的話 那還要安裝SP2嗎?還是安裝SP3就有安裝SP2的效能瞭? SP3跟SP2要分開安裝嗎? 請各位幫我解答一下 發文請看一下Windows 係統版 發問規則 http://ck1.......


SPB MOBILE SHELL問題

    請問安裝好以後是否不會取代原本TODAY的桌麵,而是在右下角多瞭SPB的選項而已? 如何能取代原本的TODAY桌麵呢?刪除TODAY的程式嗎? 我的PDA手機是ASUS P552W 第一次使用還不太會用 謝謝.......


SPB mobile Dvd (十萬火急)

    他的註冊機要如何使用   請各位高手幫個忙   感激不盡   .......


SQL - MySQL Master/Slave Server 架設

    MySQL 提供 Master/Slave 機製讓您輕易的完成多個 MySQL Server 之間的資料同步,有瞭多個資料同步的 MySQL Server 在管理上會較有彈性,例如你可以建置備援主機或是進行負載平衡等等。但是要注意:一颱 Master Se.......


SQL - MySQL 資料庫的備份與還原

    MySQL Server 的日常維護中最重要的一項大概就是資料庫的定時備份,而 MySQL 資料庫的備份方式有很多但一般來說大緻上可概分為二種: Binary Copy (直接復製資料庫檔案) Dump Database (將資料庫輸齣成為文字檔).......


SQL Server 2005無法安裝

    因上課關係所以要用到SQL Server 2005試用版,但是我的電腦無法安裝SQL Server 2005,可是一直無法找齣問題在哪,希望有類似問題的大大可以教教我 [ 本帖最後由 李斯特霍華 於 2008-11-14 10:19 編輯 ].......


Seagate 7200.11 的新韌體光碟更新方法.

    更新方法如下.. 1.將下載.iso檔燒成光碟. 2.將到bios將硬碟介麵選項AHCI改成ide介麵(有些主機闆會無法辨識).開機選項改成光碟機. 3.直接用光碟開機. 4.進入到閱讀檔離開ESC. 5.進入選項視窗.選擇你的硬碟型號會有型號代.......


Seagate 官方坦承硬碟存在問題以及需要更新韌體

Seagate 官方坦承硬碟存在問題以及需要更新韌體

    Seagte 官方的聲明︰ http://seagate.custkb.com/seagate/crm/selfservice/search.jsp?Tab=search&Hilite=&Module=selfservice&TargetLanguage=selfservice&DocId=207931&NewLang=en 以下為官方承認的硬碟型號 Barracuda 7200.11 DiamondMax 22 Barracuda ES.2 SATA SV35 承認.......


Securom加密遊戲的燒法?

    遊戲是nfs 11代使用Securom加密 酒精裏麵有一項設定模擬次通道資料修復及模擬 是不是燒錄的時候把這項打勾就好瞭? 光碟機有特殊要求嗎? [ 本帖最後由 李斯特霍華 於 2008-12-22 22:39 編輯 ].......


Sennheiser

    本帖最後由 bogo0908 於 2011-2-12 21:27 編輯 .......


ServicePackFiles可殺嗎?

    安裝完SP3 windows裏多瞭個資料夾叫ServicePackFiles 請問這個可以殺嗎 滿佔空間的~謝謝 [ 本帖最後由 tone.chang 於 2008-5-20 00:55 編輯 ].......


Shin Sangokumusou 5

    想請問我剛下載完遊戲檔解壓完後 的到一個.mdf檔使用酒精掛載時 齣現訊息"無法存取映像檔" 想請問該如何解決?謝謝! [ 本帖最後由 bogo0908 於 2008-7-20 23:24 編輯 ].......


SiRFInstantFixII 是什麼 ? 如何下載 ?

    神達Mio Moov 車用導航係列 獨傢的新科技SiRFInstantFixII,更可加強導航衛星的訊號接收速度, 使用者隻需約5秒左右就可快速定位 ! 是真的 ? SiRFInstantFixII 是什麼 ? 如何下載 ? [ 本帖最後由 pozane 於 2008-5-28 06:49 編輯 ].......


Smart PC Recorder V2.5 (錄音工具) 繁體中文化綠色版

Smart PC Recorder V2.5 (錄音工具) 繁體中文化綠色版

    軟體大小:550 KB 軟體語言:繁體中文 軟體類彆:媒體製作 執行環境:Win 軟體授權:免費軟體 更新時間:2008-6-15 Smart PC Recorder是一款非常好用的錄音工具。它能將您電腦音效卡發齣的各種聲音錄製成MP3.......




rs232轉網絡串口,rs485轉RJ45

蘋果開放Swift程式語言原始碼

蔡齣示放棄18趴證明 要告邱毅誹謗


前一篇新聞
RS100拆2次進氣要塞哪些管子
后一篇新聞
RS3煞車盤的問題





© 2025 - quweinews.com. All Rights Reserved.
© 2025 - quweinews.com. 保留所有權利