開發平台(Platform): (Ex: VC++, GCC, Linux, ...)
VC++ 2010 Express
額外使用到的函數庫(Library Used): (Ex: OpenGL, ...)
vc內建的windows.h
問題(Question):
使用writefile這個function後
在想要輸入的字串中
char data[] = "0xFF";
想要送出1個byte 16進位資料如 0xFF 結果送出的字串被當成 4個bytes 0xFF
預期的正確結果(Expected Output):
送出RS232是1個byte以0xFF表示
錯誤結果(Wrong Output):
送出4個bytes的0xFF,應該是被當4個字元來看待
程式碼(Code):(請善用置底文網頁, 記得排版)
主要的部分:
char data[] = "0xFF";
DWORD size = (DWORD)strlen(data);
WriteFile( hFile, data, size, &dwBytesWritten, NULL);
補充說明(Supplement):
確定DCB設置都沒問題,COM1的機器也收的到
"0xFF" 不就4個byte '0' 'x' 'F' 'F'?{0xFF}怎麼送的,不會是去strlen他吧?
作者: mjchicken (狐狸) 2014-07-30 16:48:00
沒錯 可能以前學資料結構太懶散 這邊開始苦手就是照上面補充說明的定義data然後後面沒變直接丟出去希望有奇蹟發生之類的妄想
作者: celen99 (珍惜每一天) 2014-07-30 16:51:00
要轉成binary再送吧?
作者: mjchicken (狐狸) 2014-07-30 16:52:00
可能是我表達不好,0xFF應該是一個Byte的對應機器指令有點像ASCii裡面的A實際上是0x41的意思c大 所以我的data要以int data[] = {11...111};//16個1來寫進去嗎
作者: celen99 (珍惜每一天) 2014-07-30 16:57:00
作者: mjchicken (狐狸) 2014-07-30 17:02:00
先謝後讀 立刻研究
作者: celen99 (珍惜每一天) 2014-07-30 17:25:00
作者: mjchicken (狐狸) 2014-07-30 17:35:00
再謝續讀 XD
分清楚什麼是字串什麼是陣列 什麼東西可以strlen
作者:
gg1122 (99通未接來電)
2014-07-30 23:39:00一個byte 迴圈寫四次就好 直接丟255給他 別管字串了
char = (char)0xff; 不就可以了嘛 o_oa??
作者: mjchicken (狐狸) 2014-07-31 11:41:00
看完c大的連結之後似乎又略懂了一些現在進行實際操作k大我現在比較了解這方面的資料結構了 你說的沒錯感謝c大和大家的幫忙,已正常運作 (Y)