js_uart.c
来自「在开发FPGA上比较有用」· C语言 代码 · 共 263 行
C
263 行
#include <stdio.h>
#include <string.h>
#include <alt_types.h>
#include <io.h>
#include <system.h>
int jieshou()
{
char msg,prompt = '0',str[50]="\0";
FILE *fp_scdt;
char ls[3]={"ss"}, Aa[3]={"Aa"},Ab[3]={"Ab"},Ac[3]={"Ac"},Ad[3]={"Ad"},Wh[3]={"Wh"},Br[3]={"Br"},Pc[3]={"Pc"};
int i=0,flag=0;
alt_u8 key;
// 打开串口设备文件
// key=keybord();
// while(key!='0')
// {
fp_scdt=fopen("/dev/scdt_uart","r+");
printf("hi 进入接收模式\n");
if(fp_scdt)
{
while(prompt !='~')
{
prompt = getc(fp_scdt); // 从数传电台UART取一个字符
// putchar(prompt);
msg=prompt;
if(msg=='$')
{
flag=1;
}
if(flag==1)
{
str[i]=msg; // 将数据存到数组中
i++;
}
}
fclose(fp_scdt);
}
i=0;
while(str[i]!='~')
{
printf("%c",str[i]);
i++;
}
if((str[0]=='$')&&(str[1]=='C')&&(str[2]=='T')&&(str[3]=='M')&&(str[4]=='S')&&(str[5]=='D'))//判断识别符
{
switch(str[6])
{
case '}':printf("东");aic23_play(3034);
break;
case '^':printf("南");aic23_play(3037);
break;
case '{':printf("西");aic23_play(3035);
break;
case '!':printf("北");aic23_play(3036);
break;
case '0':printf("直走");aic23_play(2023);
break;
default:printf("错误");aic23_play(3009);
return 0;
}
switch(str[7])
{
case '#':printf("改变模式");aic23_play(3032);
break;
case '0':printf("不改变模式");aic23_play(3033);
break;
default:printf("错误");aic23_play(3009);
return 0;
}
i=8;
while (str[i]!='~')
{
switch(str[i])
{
case '&':
i++;
ls[0]=str[i];
ls[1]=str[i+1];
if ((strcmp( ls, Aa))==0)
{
printf("1路");
aic23_play(3031);
}
else if((strcmp(ls,Ab))==0)
{
printf("2路");
aic23_play(3030);
}
else if((strcmp(ls,Ac))==0)
{
printf("3路");
aic23_play(3029);
}
else if((strcmp(ls,Ad))==0)
{
printf("4路");
aic23_play(3028);
}
else if(strcmp(ls,Br)==0)
{
printf("45路");
aic23_play(3041);
}
else if(strcmp(ls,Pc)==0)
{
printf("408路");
aic23_play(3042);
}
else
{
printf("错误");
aic23_play(3009);
return 1;
}
i=i+2;
break;
case '%':
{
i++;
switch(str[i])
{
case '|':printf("沙坡村"); aic23_play(2014);
break;
case '(':printf("沙坡"); aic23_play(2015);
break;
case ')':printf("交大电脑城");aic23_play(2006);
break;
case '*':printf("交大商场");aic23_play(2007);
break;
case '+':printf("兴庆公园");aic23_play(2016);
break;
case '_':printf("南郭门");aic23_play(2010);
break;
case '.':printf("东南城角");aic23_play(2003);
break;
case '/':printf("东门");aic23_play(2002);
break;
case '0':printf("大差市");aic23_play(2001);
break;
case '1':printf("端履门");aic23_play(2004);
break;
case '2':printf("钟楼");aic23_play(2017);
break;
case '3':printf("武警医院");aic23_play(2018);
break;
case '4':printf("铁一局医院");aic23_play(2019);
break;
case '5':printf("赛格电脑城");aic23_play(2013);
break;
case '6':printf("鲁家村");aic23_play(2009);
break;
case '7':printf("李家村");aic23_play(2008);
break;
case '8':printf("和平门");aic23_play(2005);
break;
case '9':printf("太乙路");aic23_play(2020);
break;
case ':':printf("瓦窑小区");aic23_play(2021);
break;
case ';':printf("南稍门");aic23_play(2012);
break;
case '<':printf("南门");aic23_play(2011);
break;
case '=':printf("文艺路");aic23_play(2022);
break;
default:printf("错误");aic23_play(3009);
return 1;
}
i++;
break;
}
break;
default:printf("错误");
return 1;
}
}
}
else if ((str[0]=='$')&&(str[1]=='C')&&(str[2]=='T')&&(str[3]=='S')&&(str[4]=='N')&&(str[5]=='D'))
{
switch(str[6])
{
case '}':printf("东面");aic23_play(3034);
break;
case '^':printf("南面");aic23_play(3037);
break;
case '{':printf("西面");aic23_play(3035);
break;
case '!':printf("北面");aic23_play(3036);
break;
default:printf("错误");aic23_play(3009);
return 1;
}
i=7;
while (str[i]!='~')
{
switch(str[i])
{
case '%':
{
i++;
switch(str[i])
{
case '|':printf("沙坡村");aic23_play(2014);
break;
case '(':printf("沙坡");aic23_play(2015);
break;
case ')':printf("交大电脑城");aic23_play(2006);
break;
case '*':printf("交大商场");aic23_play(2007);
break;
case '+':printf("兴庆公园");aic23_play(2016);
break;
case '_':printf("南郭门");aic23_play(2010);
break;
case '.':printf("东南城角");aic23_play(2003);
break;
case '/':printf("东门");aic23_play(2002);
break;
case '0':printf("大差市");aic23_play(2001);
break;
case '1':printf("端履门");aic23_play(2004);
break;
case '2':printf("钟楼");aic23_play(2017);
break;
case '3':printf("武警医院");aic23_play(2018);
break;
case '4':printf("铁一局医院");aic23_play(2019);
break;
case '5':printf("赛格电脑城");aic23_play(2013);
break;
case '6':printf("鲁家村");aic23_play(2009);
break;
case '7':printf("李家村");aic23_play(2008);
break;
case '8':printf("和平门");aic23_play(2005);
break;
case '9':printf("太乙路");aic23_play(2020);
break;
case ':':printf("瓦窑小区");aic23_play(2021);
break;
case ';':printf("南稍门");aic23_play(2012);
break;
case '<':printf("南门");aic23_play(2011);
break;
case '=':printf("文艺路");aic23_play(2022);
break;
default:printf("错误"); aic23_play(3009);
return 1;
}
i++;
break;
}
default:printf("错误");aic23_play(3009);
return 1;
}
}
}
printf("\n");
//}
return 0;
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?