廣告廣告
  加入我的最愛 設為首頁 風格修改
首頁 首尾
 手機版   訂閱   地圖  簡體 
您是第 9338 個閱讀者
 
發表文章 發表投票 回覆文章
  可列印版   加為IE收藏   收藏主題   上一主題 | 下一主題   
uigogogo
數位造型
個人文章 個人相簿 個人日記 個人地圖
路人甲
級別: 路人甲 該用戶目前不上站
推文 x0 鮮花 x0
分享: 轉寄此文章 Facebook Plurk Twitter 複製連結到剪貼簿 轉換為繁體 轉換為簡體 載入圖片
推文 x0
[C/C++][求助] 如何用C讀取RS232的資料
如標題。
但是用C我就不清楚了,網路上搜 ..

訪客只能看到部份內容,免費 加入會員 或由臉書 Google 可以看到全部內容



獻花 x0 回到頂端 [樓 主] From:歐洲 | Posted:2009-07-08 22:20 |
jonaspeng
個人文章 個人相簿 個人日記 個人地圖
初露鋒芒
級別: 初露鋒芒 該用戶目前不上站
推文 x0 鮮花 x24
分享: 轉寄此文章 Facebook Plurk Twitter 複製連結到剪貼簿 轉換為繁體 轉換為簡體 載入圖片

/* Name     : Sample Comm's Program - 1024 Byte Buffer - buff1024.c   */
/* Written By : Craig Peacock <cpeacock@senet.com.au>             */

/*     Copyright 1997 CRAIG PEACOCK <cpeacock@senet.com.au>       */

/*       See http://www.senet.com.au/~...erial1.htm         */
/*               For More Information                   */

#include <dos.h>
#include <stdio.h>
#include <conio.h>

#define PORT1 0x3F8 /* Port Address Goes Here */
#define INTVECT 0x0C /* Com Port's IRQ here (Must also change PIC setting) */

/* Defines Serial Ports Base Address */
/* COM1 0x3F8                 */
/* COM2 0x2F8                       */
/* COM3 0x3E8                       */
/* COM4 0x2E8                       */

int bufferin = 0;
int bufferout = 0;
char ch;
char buffer[1025];

void interrupt (*oldport1isr)();

void interrupt PORT1INT() /* Interrupt Service Routine (ISR) for PORT1 */
{
int c;
do { c = inportb(PORT1 + 5);
    if (c & 1) {buffer[bufferin] = inportb(PORT1);
            bufferin++;
            if (bufferin == 1024) {bufferin = 0;}}
  }while (c & 1);
outportb(0x20,0x20);
}

void main(void)
{
int c;
outportb(PORT1 + 1 , 0);     /* Turn off interrupts - Port1 */

oldport1isr = getvect(INTVECT); /* Save old Interrupt Vector of later
                          recovery */

setvect(INTVECT, PORT1INT);   /* Set Interrupt Vector Entry */
                        /* COM1 - 0x0C */
                        /* COM2 - 0x0B */
                        /* COM3 - 0x0C */
                        /* COM4 - 0x0B */

/*       PORT 1 - Communication Settings       */

outportb(PORT1 + 3 , 0x80); /* SET DLAB ON */
outportb(PORT1 + 0 , 0x0C); /* Set Baud rate - Divisor Latch Low Byte */
                      /* Default 0x03 = 38,400 BPS */
                      /*       0x01 = 115,200 BPS */
                      /*       0x02 = 57,600 BPS */
                      /*       0x06 = 19,200 BPS */
                      /*       0x0C =   9,600 BPS */
                      /*       0x18 =   4,800 BPS */
                      /*       0x30 =   2,400 BPS */
outportb(PORT1 + 1 , 0x00); /* Set Baud rate - Divisor Latch High Byte */
outportb(PORT1 + 3 , 0x03); /* 8 Bits, No Parity, 1 Stop Bit */
outportb(PORT1 + 2 , 0xC7); /* FIFO Control Register */
outportb(PORT1 + 4 , 0x0B); /* Turn on DTR, RTS, and OUT2 */

outportb(0x21,(inportb(0x21) & 0xEF)); /* Set Programmable Interrupt Controller */
                              /* COM1 (IRQ4) - 0xEF */
                              /* COM2 (IRQ3) - 0xF7 */
                              /* COM3 (IRQ4) - 0xEF */
                              /* COM4 (IRQ3) - 0xF7 */

outportb(PORT1 + 1 , 0x01); /* Interrupt when data received */

printf("\nSample Comm's Program. Press ESC to quit \n");

do {

  if (bufferin != bufferout){ch = buffer[bufferout];
                       bufferout++;
                       if (bufferout == 1024) {bufferout = 0;}
                       printf("%c",ch);}

  if (kbhit()){c = getch();
            outportb(PORT1, c);}

  } while (c !=27);

outportb(PORT1 + 1 , 0);     /* Turn off interrupts - Port1 */
outportb(0x21,(inportb(0x21) | 0x10)); /* MASK IRQ using PIC */
                              /* COM1 (IRQ4) - 0x10 */
                              /* COM2 (IRQ3) - 0x08 */
                              /* COM3 (IRQ4) - 0x10 */
                              /* COM4 (IRQ3) - 0x08 */
setvect(INTVECT, oldport1isr); /* Restore old interrupt vector */

}


獻花 x0 回到頂端 [1 樓] From:臺灣和信超媒體寬帶網 | Posted:2009-07-09 00:57 |
uigogogo
數位造型
個人文章 個人相簿 個人日記 個人地圖
路人甲
級別: 路人甲 該用戶目前不上站
推文 x0 鮮花 x0
分享: 轉寄此文章 Facebook Plurk Twitter 複製連結到剪貼簿 轉換為繁體 轉換為簡體 載入圖片

感謝這位大大的拔刀相助。
但是我用 devc 沒辦法 compiler        = =a

 


獻花 x0 回到頂端 [2 樓] From:歐洲 | Posted:2009-07-09 10:49 |

首頁  發表文章 發表投票 回覆文章
Powered by PHPWind v1.3.6
Copyright © 2003-04 PHPWind
Processed in 0.058021 second(s),query:16 Gzip disabled
本站由 瀛睿律師事務所 擔任常年法律顧問 | 免責聲明 | 本網站已依台灣網站內容分級規定處理 | 連絡我們 | 訪客留言