[問題] VC2010 writefile to RS232

作者: mjchicken (狐狸)   2014-07-30 16:31:29
開發平台(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的機器也收的到
作者: azureblaze (AzureBlaze)   2014-07-30 16:43:00
"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
請參考 http://sourceforge.net/projects/realterm/裡面有教 轉binary
作者: mjchicken (狐狸)   2014-07-30 17:02:00
先謝後讀 立刻研究
作者: celen99 (珍惜每一天)   2014-07-30 17:25:00
不好意思給錯了http://www.haolizi.net/example/view_705.html 這個是我用的
作者: mjchicken (狐狸)   2014-07-30 17:35:00
再謝續讀 XD
作者: azureblaze (AzureBlaze)   2014-07-30 17:49:00
分清楚什麼是字串什麼是陣列 什麼東西可以strlen
作者: gg1122 (99通未接來電)   2014-07-30 23:39:00
一個byte 迴圈寫四次就好 直接丟255給他 別管字串了
作者: Killercat (殺人貓™)   2014-07-31 10:31:00
char = (char)0xff; 不就可以了嘛 o_oa??
作者: mjchicken (狐狸)   2014-07-31 11:41:00
看完c大的連結之後似乎又略懂了一些現在進行實際操作k大我現在比較了解這方面的資料結構了 你說的沒錯感謝c大和大家的幫忙,已正常運作 (Y)

Links booklink

Contact Us: admin [ a t ] ucptt.com