嵌入式爱好者

查看: 6230|回复: 0

调用串口驱动编程出现错误 ---请版主关注一下

[复制链接]

15

主题

27

帖子

45

积分

AM335x通行证

扫一扫,手机访问本帖
发表于 2012-5-7 14:26:48 | 显示全部楼层 |阅读模式
在ok6410(android系统运行),我希望通过调用串口驱动程序来观测底层上来的数据,现在编程的具体流程如下:
1、android代码的主目录(/root/forLinux/android2.3.4_32bit),在external文件夹下创建SerialComm文件夹
2、在SerialComm目录下创建两个文件
     SerialComm.c和Android.mk
SerialComm.c:
#include <stdio.h>
#include <termios.h>
#include <fcntl.h>
#include <sys/stat.h>
#include <sys/types.h>
int main(int argc,char* argv[])
{
        //open serial with block
        int fd=open("/dev/s3c2410_serial1",O_RDWR);
        if(fd==-1)
        {
                perror("open error");
                return 0;
        }
    printf("fd=%d\n",fd);
        //set s3c2410_serial1 property
        tcflush(fd,TCIOFLUSH);
        struct termios SerialPro;
        memset(&SerialPro,0,sizeof(struct termios));
        tcgetattr(fd,&SerialPro);               
        cfsetispeed(&SerialPro,B9600);
        cfsetospeed(&SerialPro,B9600);       
        //update serial property       
        int istatus=tcsetattr(fd,TCSANOW,&SerialPro);
        if(istatus!=0)
        {
                printf("Failed to change serial property.\n");
                perror("Failed");
                return 0;
        }
        int wret=write(fd,"123456789\n",strlen("123456789\n"));
        printf("ret=%d\n",wret);
        return 0;
}
Android.mk:
LOCAL_PATH:=$(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE_TAGS:=optional
LOCAL_SRC_FILES:=SerialComm.c
LOCAL_MODULE:=SerialComm
include $(BUILD_EXECUTABLE)

3、然后在android文件系统的主目录执行:make SerialComm生成可执行文件:SerialComm
4、使用SD卡将SerialComm拷贝到开发板上的根目录下,使用超级终端设置好串口的参数,执行./SerialComm
     通过打印信息可以看到串口数据已经成功的发送完成,但是在我的超级终端里面并没有数据,偶尔有都是乱码。
请各位高手指出本程序的问题点,同时给一点建议,谢谢!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋| 飞凌嵌入式 ( 冀ICP备12004394号-1 )

GMT+8, 2024-11-25 01:20

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表