?? blue.c
字號:
/*****************************************************************************
;Institue of Automation, Chinese Academy of Sciences
;www.emsyschina.com
;File Name: 基于藍牙的串口數據文件傳輸程序 1.1
;
;Descrjz_IPtion: 使用AT9200上USART0通過藍牙模塊
; 向目標設備發送數據
;Date: 2007-10-31
;Author: 王亮
;E_mail: wangl@emsyschina.com
*****************************************************************************/
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <termios.h>
#include <errno.h>
#include <string.h>
typedef unsigned char U8;
typedef unsigned short U16;
typedef unsigned long U32;
// *******************************************************************************
// 函數名: setTermios
// 功能描述:串口工作模式設置
// *******************************************************************************
void setTermios(struct termios * pNewtio, U16 uBaudRate)
{
bzero(pNewtio, sizeof(struct termios)); // clear struct for new port settings
// 8M1
// 波特率9600 數據位8 接收使能 本地連接
pNewtio->c_cflag = uBaudRate | CS8 | CREAD | CLOCAL ;
pNewtio->c_iflag = 0;
pNewtio->c_oflag = 0;
pNewtio->c_lflag = 0; //non ICANON
// initialize all control characters
// default values can be found in /usr/include/termios.h, and
// are given in the comments, but we don't need them here
pNewtio->c_cc[VINTR] = 0; // Ctrl-c
pNewtio->c_cc[VQUIT] = 0; // Ctrl-\
pNewtio->c_cc[VERASE] = 0; // del
pNewtio->c_cc[VKILL] = 0; // @
pNewtio->c_cc[VEOF] = 4; // Ctrl-d
pNewtio->c_cc[VTIME] = 5; // inter-character timer, timeout VTIME*0.1
pNewtio->c_cc[VMIN] = 0; // blocking read until VMIN character arrives
pNewtio->c_cc[VSWTC] = 0; // '\0'
pNewtio->c_cc[VSTART] = 0; // Ctrl-q
pNewtio->c_cc[VSTOP] = 0; // Ctrl-s
pNewtio->c_cc[VSUSP] = 0; // Ctrl-z
pNewtio->c_cc[VEOL] = 0; // '\0'
pNewtio->c_cc[VREPRINT] = 0; // Ctrl-r
pNewtio->c_cc[VDISCARD] = 0; // Ctrl-u
pNewtio->c_cc[VWERASE] = 0; // Ctrl-w
pNewtio->c_cc[VLNEXT] = 0; // Ctrl-v
pNewtio->c_cc[VEOL2] = 0; // '\0'
}
// *******************************************************************************
// 函數名: delay_m
// 功能描述:延時函數
// *******************************************************************************
void delay_m(unsigned int time)
{
unsigned int i;
while(time--){
i=1000;
while(--i);
}
}
// *******************************************************************************
// 函數名: main
// 功能描述:主函數
// *******************************************************************************
int main(void)
{
FILE *fp; // 指向數據文件的指針
int fd;
struct termios oldtio,newtio;
char *dev ="/dev/ttyS3";
char commnt[128]; // 緩沖字符串
char *argv;
argv = commnt; // 將緩沖字符串的首地址賦值給指針argv
// 打開AT9200串口2---ttyS3
if ( (fd = open(dev,O_RDWR | O_NOCTTY ))<0)
{
printf("Can't Open Serial Port!\n");
return -1;
}
tcgetattr(fd,&oldtio); // 保存當前串口工作模式
setTermios(&newtio,B115200); // 設置串口波特率為115200
tcflush(fd, TCIFLUSH);
tcsetattr(fd,TCSANOW,&newtio);
// 打開準備通過串口發送的文件
if((fp=fopen("ipconf.txt","r"))==NULL)
{
printf(" Cannot open the file \n");
return 0;
}
// ****************數據傳輸************************
while(!feof(fp)) // 判斷是否到達文件末尾
{
*commnt = getc(fp); // 從文件得到一個字符賦值給緩沖字符串
putchar(*commnt); // 在終端打印出來 核實數據
write(fd, argv,1); // 將得到的字符通過串口發送出去
delay_m(3);
}
// ************************************************
tcsetattr(fd,TCSANOW,&oldtio);
close(fd);
fclose(fp);
return 0;
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -