bo_kont_nd_v2hs
#include <stdio.h>
#include <wiringPi.h>
#include <string.h>
#include <errno.h>
#include <unistd.h>
#include <stdlib.h>
int pinI = 22;//Physical 31
int p_count = 1;
int flag = 0;
int flagStop = 0;
char i_c = '0';
int stringDat[9];
char stringComStop[25] = "killall -9 dab-rtlsdr-5";
char stringComDab1 [70] = "sudo ./dab-rtlsdr-5 ";
char stringComDab2 [70] = "sudo ./dab-rtlsdr-5 ";
char stringComDab3 [70] = "sudo ./dab-rtlsdr-5 ";
char stringComDab4 [70] = "sudo ./dab-rtlsdr-5 ";
char stringComDab5 [70] = "sudo ./dab-rtlsdr-5 ";
char stringComDab6 [70] = "sudo ./dab-rtlsdr-5 ";
char stringComDab7 [70] = "sudo ./dab-rtlsdr-5 ";
char stringComDab8 [70] = "sudo ./dab-rtlsdr-5 ";
char stringComDab9 [70] = "sudo ./dab-rtlsdr-5 ";
char stringComDabRA [70] = "sudo ./dab-rtlsdr-5 -C 12C -Q -G 90 -p 22 -P _NOVA &";
char stringComDabLA [70] = "sudo ./dab-rtlsdr-5 -C 11C -Q -G 80 -p 22 -P \"DR P1\" &";
char stringO [3] = " &";
char *source, *disti;
char line[60];
char ch;
int i = 0;
int res = 0;
int count;
int test;
int decode (int res)
{
flag = 1;
switch (res)
{
case 86 : {//PHONO
if (flagStop == 0)
p_count = 1;
delay (60);
flagStop = 0;
}
break;
case 84 : {//TAPE fr_sl
if (flagStop == 0)
p_count = 1;
delay (60);
flagStop = 0;
}
break;
case 3 : {//NUM
delay (130);
flag = 0;
}
break;
case 54 : {//AUX
if (flagStop == 0)
p_count = 1;
delay (60);
flagStop = 0;
}
break;
case 50 : {//STOP
system (stringComStop);
delay (60);
flag = 0;
flagStop = 1;
}
break;
case 74 : {//T STOP
system (stringComStop);
delay (60);
flag = 0;
flagStop = 1;
}
break;
case 52 : {//OFF
system (stringComStop);
delay (60);
flag = 0;
}
break;
case 106 : {//RIGHT ARROW
delay (60);
flag = 0;
}
break;
case 102 : {//T RIGHT ARROW
delay (60);
flag = 0;
}
break;
case 12 : {//LEFT ARROW
delay (60);
flag = 0;
}
break;
case 76 : {//T LEFT ARROW
delay (60);
flag = 0;
}
break;
case 44 : {//RIGHT DOUBLE ARROW
system (stringComStop);
delay (60);
system (stringComDabRA);
flag = 0;
flagStop = 0;
}
break;
case 46 : {//LEFT DOUBLE ARROW
system (stringComStop);
delay (60);
system (stringComDabLA);
flag = 0;
flagStop = 0;
}
break;
case 124: {//1
p_count = 1;
delay (60);
}
break;
case 122: {//2
p_count = 2;
delay (60);
}
break;
case 120: {//3
p_count = 3;
delay (60);
}
break;
case 118: {//4
p_count = 4;
delay (60);
}
break;
case 116: {//5
p_count = 5;
delay (60);
}
break;
case 114: {//6
p_count = 6;
delay (60);
}
break;
case 112: {//7
p_count = 7;
delay (60);
}
break;
case 110: {//8
p_count = 8;
delay (60);
}
break;
case 108: {//9
p_count = 9;
delay (60);
}
break;
default: {
flag = 0;
flagStop = 0;
return 0;
}
}
if (flag == 1)
{
if (p_count > 9)
{
p_count = 1;
}
if (p_count < 1)
{
p_count = 9;
}
switch (p_count)
{
case 1 :{
system (stringComStop);
system (stringComDab1);
delay (60);
}
break;
case 2 :{
system (stringComStop);
system (stringComDab2);
delay (60);
}
break;
case 3 :{
system (stringComStop);
system (stringComDab3);
delay (60);
}
break;
case 4 :{
system (stringComStop);
system (stringComDab4);
delay (60);
}
break;
case 5 :{
system (stringComStop);
system (stringComDab5);
delay (60);
}
break;
case 6 :{
system (stringComStop);
system (stringComDab6);
delay (60);
}
break;
case 7 :{
system (stringComStop);
system (stringComDab7);
delay (60);
}
break;
case 8 :{
system (stringComStop);
system (stringComDab8);
delay (60);
}
break;
case 9 :{
system (stringComStop);
system (stringComDab9);
delay (60);
}
break;
default : break;
delay (2000);
}
}
return 0;
}
void fileR (void)
{
FILE *fp = fopen("/boot/dabrd.txt", "r");
if(fp == NULL)
{
perror("Unable to open file!");
exit(1);
}
for (count = 1; count < 10; count++)
{
source = line;
while((test = fgetc(fp)) != 13)//read file
{
ch = test;
*source = ch;
source++;
}
*source = '\0';//string ends
if (count > 1)
line[0] = ' ';//Removes lineshift
strcat (line, stringO);//add &
source = line;
switch (count)
{
case 1 : disti = stringComDab1;//add sudo ./dab-rtlsdr-5
break;
case 2 : disti = stringComDab2;//add sudo ./dab-rtlsdr-5
break;
case 3 : disti = stringComDab3;//add sudo ./dab-rtlsdr-5
break;
case 4 : disti = stringComDab4;//add sudo ./dab-rtlsdr-5
break;
case 5 : disti = stringComDab5;//add sudo ./dab-rtlsdr-5
break;
case 6 : disti = stringComDab6;//add sudo ./dab-rtlsdr-5
break;
case 7 : disti = stringComDab7;//add sudo ./dab-rtlsdr-5
break;
case 8 : disti = stringComDab8;//add sudo ./dab-rtlsdr-5
break;
case 9 : disti = stringComDab9;//add sudo ./dab-rtlsdr-5
break;
}
disti = disti + 20;
while (*source != 0)
{
*disti = *source;
source++;
disti++;
}
*disti = 0;
}
fclose(fp);
}
int main (void)
{
fileR ();
if (wiringPiSetup () == -1)
return 1 ;
pinMode (pinI, INPUT);
while (1)
{
while (digitalRead (pinI) == 1)
{
delay(0.5);
pinMode (pinI, INPUT);
if (digitalRead (pinI) == 0)
{
delay (1.5);
for (i = 1; i < 8; i++)
{
delay(3.4);
stringDat[i] = (digitalRead (pinI));
}
res = 0;
for (i = 1; i < 8; i++)
{
switch (i)
{
case 1 : res = stringDat[i] * 64;
break;
case 2 : res = res + (stringDat[i] * 32);
break;
case 3 : res = res + (stringDat[i] * 16);
break;
case 4 : res = res + (stringDat[i] * 8);
break;
case 5 : res = res + (stringDat[i] * 4);
break;
case 6 : res = res + (stringDat[i] * 2);
break;
case 7 : res = res + (stringDat[i] * 1);
break;
}
}
decode (res);
delay (10);
}
}
}
return 0 ;
}
Compile med: gcc -o bo_kont_nd_v2hs bo_kont_nd_v2hs.c -lwiringPi , installer wiringpi med: sudo apt-get install wiringpi
Bemærk:
dette er ekspermentel software der er ingen garanti for brugbarhed, det
kan derimod sandsynligvis være skadeligt, kun til brug i Danmark.