[問題] 關於無緩衝函式
開發平台(Platform): (Ex: VC++, GCC, Linux, ...)
Code::Blocks / Visual C++
額外使用到的函數庫(Library Used): (Ex: OpenGL, ...)
fcntl.h / io.h
問題(Question):
算蠻古老的一堆函式,我知道現在都用 Win32 API / GDI 做比較多,純好奇想問。
< 其實是如果可以用的話會省很多開發時間吧! >
我想確認,早期可用 setmode 與無緩衝函式進行 rs232 傳輸與列表機輸出,
細節上我沒找到範例 (像 fd 是來自哪個 LPT1/LP2 、COM1/2 設定等),
C::B 與 VS2012 至今還保留這些函式沒拿掉,但下例卻沒辦法從列表機輸出,
原因是因我手上的 printer 吃 usb,不走 LPT ??
還是其實這幾支函式對於硬體通訊之支緩已有限,只為歷史因素才保留?
程式碼(Code):(請善用置底文網頁, 記得排版)
#include <fcntl.h>
#include <io.h>
#include <stdio.h>
int main()
{
int fd, ch;
int fc = 4; /* printer */
setmode(fc, O_TEXT);
fd = open("mat.txt", O_RDONLY | O_TEXT);
while(read(fd, &ch, sizeof(ch))){
write(fc, &ch, sizeof(ch));
}
close(fd);
return 0;
}
補充說明(Supplement):
另外想問一些有經驗版友,fc 改 1 時 (輸出到 montior),
會有原本排版跑掉的情況,不知是否小弟哪裡觀念有誤?
謝謝各位細心閱讀。
--
「自從我學了 C# , 人都變聰明 , 考試都考一百分」
「自從我學了 VB , 皮膚都變好 , 人也變漂亮了 」
「自從我學了 Java , 明顯變壯 , 個子也變高了 」
「自從我學了 C++ , 內分泌失調 , 頭都禿了... 」
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 180.177.76.161
推
10/15 17:14, , 1F
10/15 17:14, 1F
可能我敘述 / code 沒弄好,初步看起來不像。因加上條件判斷輸出結果也一樣
while(read(fd, &ch, sizeof(ch))){
if(ch!='\r')
write(1, &ch, sizeof(ch));
}
補上截圖 http://ppt.cc/aGA4
※ 編輯: EdisonX 來自: 180.177.76.161 (10/15 17:37)
→
10/16 10:27, , 2F
10/16 10:27, 2F
→
10/16 10:28, , 3F
10/16 10:28, 3F
→
10/16 10:30, , 4F
10/16 10:30, 4F
→
10/16 10:30, , 5F
10/16 10:30, 5F
→
10/16 10:31, , 6F
10/16 10:31, 6F
→
10/16 10:32, , 7F
10/16 10:32, 7F
→
10/16 10:40, , 8F
10/16 10:40, 8F
→
10/16 10:41, , 9F
10/16 10:41, 9F
→
10/16 10:41, , 10F
10/16 10:41, 10F
→
10/16 13:34, , 11F
10/16 13:34, 11F
→
10/16 13:34, , 12F
10/16 13:34, 12F
→
10/16 14:08, , 13F
10/16 14:08, 13F