Files
hisi_SS524V100_SDK/mpp/sample/xinuo_get/ctrl_pnl_yuan.c
T

227 lines
4.8 KiB
C

#include <stdio.h>
#include <stdlib.h>
#include <sys/time.h> // gettimeofday
#include <sys/stat.h>
#include <string.h>
#include <unistd.h>
#include <sys/types.h>
#include <fcntl.h>
#include <sys/mman.h>
#include <sys/ioctl.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <netdb.h>
#include <errno.h>
#include "serial.h"
#include "uartinf.h"
#include "confile.h"
#include "udp_util.h"
char _rx_data[1024];
struct lc6600_param{
int password;
int freq;
int power;
int bw;
int ap_sta;
int ip;
int setup;
};
char freq1[10];
char freq2[10];
char dbm1[5];
char dbm2[5];
int my_strlen(char* str)
{
char*start = str;
while (*str != '\0')
{
str++;
}
return str - start;
}
int main (int argc, char *argv[])
{
int n_read;
int i;
//char buffer[1024];
char rx1[3];
char rx2[3];
char rx3[3];
char ip[13];
int dbm1;
int dbm2;
int dbm3;
char *ip_str;
//char *buffer_freq;
char freq_str[6];
int freq;
int fq;
int bitrate;
int fd_param;
int *buffer_param;
int len;
char *buffer_freq;
char *buffer;
char *buffer_rssi;
char *buffer_rssi1;
char *buffer_rssi2;
float rssi;
float rssi1;
float rssi2;
char bit[6];
char bit2[20];
char bit1[6];
n_read = uart_init(ROUTE_UART, "/dev/ttyAMA2", 115200, 'N');
if(n_read <=0 ) {
printf("open /dev/ttyAMA2 failed\n");
return -1;
}
fd_param = shm_open("/param.txt",O_RDWR|O_CREAT|O_EXCL,0777);
if(fd_param < 0){
fd_param = shm_open("/param.txt",O_RDWR,0777);
}else
ftruncate(fd_param,4096);
buffer_param= mmap(NULL,4096,PROT_READ|PROT_WRITE,MAP_SHARED,fd_param,0);
//buffer_param[0] = 0xAA;i
//buffer_param[3]=4560;
//buffer_param[4]=14430;
//freq=atoi(argv[1]);
//printf("freq %d \n",freq);
//buffer_param[3]=freq;
while(1){
n_read = uart_get(ROUTE_UART,_rx_data);
//n_read = uart_read(ROUTE_UART,_rx_data);
//printf("%s\n",_rx_data);
if(n_read >30){
printf("%s\n",_rx_data);
//printf("%d\n",n_read);
//len=!strncmp("VGA",_rx_data,3);
//printf("len %x\n");
//if((!strncmp("VGA",_rx_data,3)) && n_read < 65 ){
if((!strncmp("POINT",_rx_data,5)) && n_read < 80 ){
buffer_rssi = strstr(_rx_data,"RSSI:");
buffer_rssi1 = strstr(_rx_data,"RSSI1:");
buffer_rssi2 = strstr(_rx_data,"RSSI2:");
buffer_freq = strstr(_rx_data,"Point");
if( buffer_rssi && buffer_rssi1 && buffer_rssi2){
//memcpy(rx1,buffer_rssi1+6,6);//信号强度
strncpy(bit,buffer_rssi1+6,6);//信号强度
rssi1 = atof(bit);
strncpy(bit,buffer_rssi2+6,6);//信号强度
rssi2 = atof(bit);
strncpy(bit,buffer_freq+6,5);//ti频率
bit[5]=0x00;
freq = atoi(bit); //字符型转化为整型
buffer_param[1]= rssi1;
buffer_param[2]= rssi2;
buffer_param[4]= freq;
printf("rx %.2f 2 %.2f %d \n",rssi1,rssi2,freq);
buffer_param[3] = 0; //码流
buffer_param[0]=0xAA; //no signal
//printf("++%f \n",buffer_param[12]);
}
}
else if(n_read >85){ //xinuo get signal
//buffer=strstr(_rx_data,"%)");
//buffer_rssi = strstr(_rx_data,"RSSI:");
buffer_rssi = strstr(_rx_data,"RSSI:");
buffer_rssi1 = strstr(_rx_data,"RSSI1:");
buffer_rssi2 = strstr(_rx_data,"RSSI2:");
buffer_freq = strstr(_rx_data,"Point");
buffer = strstr(_rx_data,"%)");
printf("buffer %s\n",buffer);
if(buffer_rssi){
//if(buffer){
len = strlen(buffer)-8;
printf("len %d\n",len);
strncpy(bit,buffer+2,len);//信号强度
// if(strlen(buffer)<=7){
// strncpy(bit,buffer_rssi1+6,6);//信号强度
// }else {
// strncpy(bit,buffer+2,4);
// }
// printf("bit %s ",bit);
bit[len]=0x00;
printf("bit %s\n",bit);
//bit[4] = 0x00;
//bit[5] = 0x00;
bitrate=atoi(bit);//码流
strncpy(bit,buffer_rssi1+6,6);//信号强度
rssi1 = atof(bit);
strncpy(bit,buffer_rssi2+6,6);//信号强度
rssi2 = atof(bit);
strncpy(bit,buffer_freq+6,5);//频率
bit[5]=0x00;
freq = atoi(bit); //字符型转化为整型
printf("rx %.2f 2 %.2f freq %d bit %d\n",rssi1,rssi2,freq,bitrate);
buffer_param[1]= rssi1;
buffer_param[2]= rssi2;
buffer_param[4]= freq;
buffer_param[3] = bitrate;
#if 0
if(bitrate / 10000){
buffer_param[3] = (float)(bitrate/100);
}else {
buffer_param[3] = (float)bitrate;
}
#endif
buffer_param[0]=0x55; //flag gignal
//printf("+++++++rx %.2f 2 %.2f +++++ \n",rssi1,rssi2);
}
}
}
}
}