
printf 如何重定位printf()的输出设备,进行串口输出
最近用VC++6.0做一个项目,需要用串口输出数据,有字符串,有浮点型数据,类型比较多,请问如何使用printf()进行串口输出?...
最近用VC++6.0做一个项目,需要用串口输出数据,有字符串,有浮点型数据,类型比较多,请问如何使用printf()进行串口输出?
展开
2个回答
展开全部
类似于...
#include <stdio.h>
#include <sys/types.h>
#include <io.h>
#include <fcntl.h>
#include <windows.h>
int main()
{
int t;
FILE *fp;
HANDLE f = CreateFileW(L"\\\\.\\com1", 3, 0, 0, OPEN_EXISTING, 0, 0);
// TODO 设置串口参数
t = _open_osfhandle((intptr_t)f, _O_TEXT);
fp = _fdopen(t, "r+");
*stdout = *fp;
*stdin = *fp;
}
不过超级不建议这么干,还是老老实实ReadFile WriteFile比较好
#include <stdio.h>
#include <sys/types.h>
#include <io.h>
#include <fcntl.h>
#include <windows.h>
int main()
{
int t;
FILE *fp;
HANDLE f = CreateFileW(L"\\\\.\\com1", 3, 0, 0, OPEN_EXISTING, 0, 0);
// TODO 设置串口参数
t = _open_osfhandle((intptr_t)f, _O_TEXT);
fp = _fdopen(t, "r+");
*stdout = *fp;
*stdin = *fp;
}
不过超级不建议这么干,还是老老实实ReadFile WriteFile比较好
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
如果有设备名,可以当输出文件打开,做输出,例如linux:
fd = open( "/dev/ttyS0", O_RDWR);
用sprintf 把输出数据变成字符串,用printf一个byte一个byte输出.
printf 平时是向 stdout 和 stderr 做输出,如何把他们变到你的串口,
我不清楚,应当是硬件问题(包括设备驱动程序)和configulation(配置)问题。
fd = open( "/dev/ttyS0", O_RDWR);
用sprintf 把输出数据变成字符串,用printf一个byte一个byte输出.
printf 平时是向 stdout 和 stderr 做输出,如何把他们变到你的串口,
我不清楚,应当是硬件问题(包括设备驱动程序)和configulation(配置)问题。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询