Linux下, 通过串口控制单片机的灯lLED0亮,单片机程序已经写好,上位机部分的传输信息这一块有点问题 20

我想在LINUX下,通过串口来实现对单片机LED灯的控制。单片机上的串口程序是,当串口输入过来的信号为'y'时,LED0就亮。用串口助手已经调试过了,程序没有问题现在面临... 我想在LINUX下,通过串口来实现对单片机LED灯的控制。
单片机上的串口程序是,当串口输入过来的信号为'y'时,LED0就亮。
用串口助手已经调试过了,程序没有问题
现在面临的一个问题就是,上位机这边,Linux的串口程序实验代码如下,我设置了相关了linux串口参数
包括 文件句柄 波特率 数据位 奇偶校验 停止位,设置一个buf,它的值为'y',并在设置完串口参数后将buf发送给串口。
程序运行也没问题,能够正常结束,但是单片机上的灯就是不亮,这是什么原因?是我初始化串口参数的时候漏了吗?

求详细,可加分

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <unistd.h>
#include <termios.h>
#include <errno.h>
#include <fcntl.h>

#define FD_TTY "/dev/tty7"

int main()
{
int fd;
struct termios opt;
char *buf;

//Open Serial Port
if((fd = open(FD_TTY, O_RDWR)) < 0)
{
perror("Open device");
exit(1);
}
printf("Open successful\n");

tcgetattr(fd, &opt);
tcflush(fd, TCIOFLUSH);

cfsetispeed(&opt, B9600);
cfsetispeed(&opt, B9600);

opt.c_cflag &= ~CSIZE;
opt.c_cflag |= CS8;

opt.c_cflag &= ~PARENB;
opt.c_iflag &= ~INPCK;

opt.c_cflag &= ~CSTOPB;

if(tcsetattr(fd, TCSANOW, &opt) < 0)
{
perror("set baudrate");
exit(1);
}
tcflush(fd, TCIOFLUSH);

buf = "y";
if(write(fd, buf, strlen(buf)) < 0)
{
perror("write data\n");
close(fd);
exit(1);
}
printf("Send successful!\n");

close(fd);
return 0;
}
展开
 我来答
一万光年MEGn0
2014-12-17 · TA获得超过3712个赞
知道大有可为答主
回答量:4602
采纳率:67%
帮助的人:1069万
展开全部
单片机接收数据正确吗? 接收后可以判断正确吗?
更多追问追答
追问
应该是对的诶。
在WINDOW界面的串口调试助手上,我发送 y 到单片机,就可以亮灯
但是linux这个, 我直接也是定义的一个 char *buf = "y" ,也是对的撒,它就是不亮
追答
那有可能是LINUX 这里的问题,它数据没发出,或单片机没收到。

你可以让LINUX 发送数据,电脑接收看看发送正不正常。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
查晓筠0i5
2014-12-17 · TA获得超过2752个赞
知道大有可为答主
回答量:2.1万
采纳率:1%
帮助的人:4954万
展开全部

需要给你完成设计吗

我做单片机的

本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式