国产毛片a精品毛-国产毛片黄片-国产毛片久久国产-国产毛片久久精品-青娱乐极品在线-青娱乐精品

穿prada的008的個人空間 http://www.qingdxww.cn/space-uid-108322.html [收藏] [復制] [RSS]

博客

【Rayeager PX2分享】PX2上ttys3串口測試程序編寫

已有 1584 次閱讀2015-7-2 17:48 | PX2

在PX2開發板上有個已引出的的ttys3,大家如果用PX2來開發或者學習,時不時總是會需要用到這個串口的,而在android系統中,使用串口的方式也很簡單,因為在PX2的源碼中已經有了ttys3的驅動,我們只需要將起編譯進內核(編譯fangshihttp://bbs.chipspark.com/forum.p ... =%E4%B8%B2%E5%8F%A3)就可以像操作文件一樣,操作這個串口,然后操作這個串口的時候,我們需要做的也只有先做個初始的配置,就是設置波特率,停止位,數據位,奇偶校驗。
注:ttys3的連接如果是DB9腳的,理論上只連接RX ,TX,GND便可工作。樓主便是用這個的
1.串口的配置,
串口的配置是利用POSIX終端的termios結構
termios 結構定義如下 
struct termios 
tcflag_t c_iflag /* 輸入選項標志 */ 
tcflag_t c_oflag /* 輸出選項標志 */ 
tcflag_t c_cflag /* 控制選項標志 */ 
tcflag_t c_lflag /* 本地選項標志 */ 
cc_t c_cc[NCCS] /* 控制特性 */ 
而部分參數的作用參考附件中的內容 Linux下串口編程-非常全面-精品.txt.zip
核心主要配置波特率,校驗位,數據位,停止位,
而樓主自己寫的驅動如下,其中的設置為波特率115200,無效驗,八位數據位,一位停止位,

#include <stdio.h> /*標準輸入輸出定義*/ 
#include <stdlib.h> /*標準函數庫定義*/ 
#include <unistd.h> /*Unix 標準函數定義*/ 
#include <sys/types.h> 
#include <sys/stat.h> 
#include <fcntl.h> /*文件控制定義*/ 
#include <termios.h> /*PPSIX 終端控制定義*/ 
#include <errno.h> /*錯誤號定義*/ 
#include <linux/kernel.h>

    int OpenDev(char *Dev){

    int fd = open( Dev, O_RDWR )  
    if (-1 == fd){ 
        perror("Can't Open Serial Port") 
        return -1 
    else 
        return fd 
    int set_opt(int fd,int nSpeed,int nBits,char nEvent,int nStop){
    struct termios newios,oldios
    if(tcgetattr(fd, &oldios)!=0){    //獲取之前定義的終端值    
        perror("setupserial 1")
        return -1
}
    bzero(&newios,sizeof(newios))//將newios結構體里的數據重新設置為0
    newios.c_cflag|=CREAD//使能讀和
    newios.c_cflag&=~CSIZE//字符長度掩碼
    switch(nBits){
        case 7:newios.c_cflag|=CS7break
        case 8:newios.c_cflag|=CS8break


}
    switch(nEvent){
        case '0':
            newios.c_cflag|=PARENB
            newios.c_cflag|=PARODD
            newios.c_cflag|=(INPCK|ISTRIP)//偶校驗
            break
        case '1':
            newios.c_cflag|=PARENB
            newios.c_cflag&=~PARODD//奇校驗
            break
        case 'N':
            newios.c_cflag&=~PARENB//無校驗
            break

}
    switch(nSpeed){//設置波特率
        case 2400:
            cfsetispeed(&newios,B2400)
            cfsetospeed(&newios,B2400)
            break
        case 4800:
            cfsetispeed(&newios,B4800)
            cfsetospeed(&newios,B4800)
            break
        case 9600:
            cfsetispeed(&newios,B9600)
            cfsetospeed(&newios,B9600)
            break
        case 115200:
            cfsetispeed(&newios,B115200)
            cfsetospeed(&newios,B115200)
            break
        default:
            cfsetispeed(&newios,B115200)
            cfsetospeed(&newios,B115200)
            break
    }
    if(nStop==1)
        newios.c_cflag&=~CSTOPB//一停止位
    else if (nStop==2)
    {
        newios.c_cflag|=CSTOPB//兩停止位
        newios.c_cc[VTIME]=0//無延時
        newios.c_cc[VMIN]=0//無附加
        tcflush(fd,TCIOFLUSH)//刷新輸出隊列
}        

    newios.c_lflag &= ~(ICANON | IEXTEN | ISIG | ECHO)//原始數據輸入
    newios.c_oflag &= ~OPOST//原始數據輸出
    if(tcsetattr(fd,TCSANOW,&newios)!=0)//將配置賦予POSIX終端
        {
            perror("com set error")
            return -1

            }

        printf("set done\n")
return 0

}
int main(int argc, char **argv){ 
int fd 
int nread,nwrite 
char buff[8] 
char *dev = "/dev/ttyS3" //串口3
char bufsend[8]
fd = OpenDev(dev) 

if (set_opt(fd,115200,8,'N',1) == FALSE) { 
printf("Set Parity Errorn") 
exit (0) 
memset(buff,0,8*sizeof(char))
if(strcmp(argv[1],"receive")==0)
{
while(1){
while((nread = read(fd, buff, 8))>0) //讀數據,在死循環中不斷等待,輸出數據,
printf("receive %d ",nread)       
printf( "\n%s", buff) 
}}}
memset(bufsend, 0,8*sizeof(char))//清空數據棧
if(strcmp(argv[1],"send")==0){//發送數據,類型字符
printf("send message:  ")
fgets(bufsend,8,stdin)
printf("\n%s",bufsend)

nwrite=write(fd,bufsend,8)

}

close(fd) 
exit (0) 

2.程序測試,
確認連接無誤后,樓主開始發送數據,但是,雖然正常實現串口的通信,但是發送的數據卻是亂碼,一開始樓主發送了111111111111,而接受到的數據是ggggggggggg,其接收到的即不是ascii碼,而對應的十六進制是67,具體的問題樓主還在研究,估計還得過段時間,才能解決這個問題,按樓主的估計可能性有兩個,一個是樓主是使用DB9接口的,只連了三根線,并沒有VCC,會不會是這個有影響,二,樓主配置串口時,只做了基本配置,或許是某個配置出錯了。這里先放到論壇上分享給大家,后續再繼續補充,與大家共勉。

串口調試助手 
 sscom32.rar

路過

雞蛋

鮮花

握手

雷人

評論 (0 個評論)

facelist

您需要登錄后才可以評論 登錄 | 立即注冊

關于我們  -  服務條款  -  使用指南  -  站點地圖  -  友情鏈接  -  聯系我們
電子工程網 © 版權所有   京ICP備16069177號 | 京公網安備11010502021702
返回頂部
主站蜘蛛池模板: 婷婷激情综合网 | 最近日本中文字幕免费完整 | 日本精品视频一视频高清 | 一二三区视频 | 在线观看人成网站深夜免费 | 经典三级一区二区三区视频 | 国产一级一级一级成人毛片 | 日韩经典在线 | 在线不卡日韩 | 91资源在线观看 | 97av麻豆蜜桃一区二区 | 国家免费看在线视频 | 黄色网页免费 | 午夜视频在线播放 | 欧美一区二区三区免费 | 欧美激情中文字幕一区二区 | 日本福利片国产午夜久久 | 国产亚洲精彩视频 | 女人l8毛片a一级毛片免费 | 高清欧美一区二区免费影视 | 四虎精品影院2022 | 色婷婷综合激情视频免费看 | 黄网站在线观看视频 | 中文字幕第一区 | 两个人的视频在线免费观看 | 麻豆精品国产免费观看 | 国内精品一区二区在线观看 | 欧美在线看欧美高清视频免费 | 欧美图片自拍偷拍 | 国产99在线视频 | 日本高清一二三区 | 亚洲国产一 | 国产黄mmd在线观看免费 | 国产精品综合一区二区 | 麻豆精品在线观看 | 岛国免费在线 | 日韩黄色在线视频 | 国产美女视频免费 | 亚洲男女天堂 | 手机成人免费视频 | 91视频精品|