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 編輯
]
|
分享鏈接
提供你在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 ,就可以在一個字串內找.......
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 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 特點
* 搭載全片幅,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除高價位的相機外
其他很多都是大陸.......
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
第一次使用還不太會用
謝謝.......
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 官方坦承硬碟存在問題以及需要更新韌體
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 編輯 ].......