我想使用函數printf
在串口上打印字符。我已閱讀這2個職位1和2,但我'不知道理解MANIP:將printf重定向到串口
在1st link有人說:
要啓用printf的功能,首先你需要創建一個新的__FILE
結構。這個結構然後用FILE結構體調用。
爲什麼我必須創建__FILE
結構體我並沒有真正解決這個問題。
在2nd link有人說
完成從我們也不得不重新定義__stdout
和__stdin
標準I/O庫的分離。這些可以在__FILE
結構的聲明下面的retarget.c文件中找到。
如果我重新定義這兩個變量不是一個編譯錯誤,我的意思是重新定義。
這肯定似乎是艱難地做到這一點。你有'dup2()'?你的平臺是否有一個「正常」的'stdout'文件描述符值,比如''stdout''使用文件描述符'1'?如果是這樣,只要做一些像'int fd = open(「/ path/to/port」...); dup2(fd,STDOUT_FILENO);'。你可能想禁用'stdout'緩衝。 –
也許freopen可能對你有用。 – JohnTortugo
感謝您的反饋,@Andrew Henle作爲我undrestand'printf'將使用'fputc'在scrreen上顯示caracter,因此'printf'函數中的某處會調用'fputc(stdout,car)',所以在此如果我們重複了stdout fd,那麼'car'也會被打印到新的fd中(由dup創建),但是會發生什麼? – Mouin