loop over array of chars

This commit is contained in:
Norman Bos
2024-07-22 15:33:36 +02:00
parent b154e7cba7
commit e0451ffd1b
3 changed files with 140 additions and 60 deletions
+68 -32
View File
@@ -155,6 +155,14 @@ void sendButton12(int command)
IrSender.sendSony(0xF, command, 2, 12); IrSender.sendSony(0xF, command, 2, 12);
} }
void sendButton20(int command)
{
Serial.print(F("Send Sony/SIRCS with 7 command and 13 address bits: "));
Serial.println(command);
Serial.flush();
IrSender.sendSony(0xF & 0x1FFF, command & 0x7F, 2, SIRCS_20_PROTOCOL);
}
void sendCommand12(String commandString) void sendCommand12(String commandString)
{ {
if (commandString == "POWER") if (commandString == "POWER")
@@ -175,34 +183,60 @@ void sendCommand12(String commandString)
} }
} }
void sendButton20(int command) //! Ich brauche eine Funktion, die den vorherigen und den folgenden char prüft und checked, ob der lowercase, oder num ist und dann entsprechend den Modus umschaltet.
{
Serial.print(F("Send Sony/SIRCS with 7 command and 13 address bits: ")); //! Ich brauche eine Funktion, die den char mit einem IR command vergleicht und den IrSender.sendSony() ausführt.
Serial.println(command);
Serial.flush();
IrSender.sendSony(0xF & 0x1FFF, command & 0x7F, 2, SIRCS_20_PROTOCOL);
}
void sendCommand20(String commandString) void sendCommand20(String commandString)
{ {
if (commandString == "Q") if (commandString == "Q")
sendButton20(Q); sendButton12(keyQ);
if (commandString == "W") if (commandString == "W")
sendButton20(W); sendButton12(keyW);
if (commandString == "E") if (commandString == "E")
sendButton20(E); sendButton12(keyE);
if (commandString == "R") if (commandString == "R")
sendButton20(R); sendButton12(keyR);
if (commandString == "T") if (commandString == "T")
sendButton20(T); sendButton12(keyT);
if (commandString == "Z") if (commandString == "Z")
sendButton20(Z); sendButton12(keyZ);
else else
{ {
Serial.println("wrong command!"); Serial.println("wrong command!");
} }
} }
void nameSingleTrack(String titlestring)
{
Serial.print("track name: ");
Serial.println(titlestring);
//! Brauche ich den null terminator?
int str_len = titlestring.length() + 1; // Length (with one extra character for the null terminator)
Serial.print("string length: ");
Serial.println(str_len);
char char_array[str_len]; // Prepare the character array (the buffer)
titlestring.toCharArray(char_array, str_len); // Copy it over
for (int i = 0; i < str_len; i++) // Loop over array
{
int s = char_array[i];
Serial.print("char: ");
Serial.println(char_array[i]);
}
}
void nameAllTracks(String message)
{
Serial.print("track list: ");
Serial.println(message);
// split into array of strings after each line break
// use nameSingleTrack with each track
}
//------------------------------------------------ //------------------------------------------------
//------------- Webserver Functions -------------- //------------- Webserver Functions --------------
@@ -236,21 +270,6 @@ void setup()
server.serveStatic("/", SD, "/"); server.serveStatic("/", SD, "/");
// Send a GET request to <IP>/api/gettextinput?message=<message>
server.on("/api/gettextinput", HTTP_GET, [](AsyncWebServerRequest *request)
{
String message;
if (request->hasParam("text_input"))
{
message = request->getParam("text_input")->value();
Serial.println(message);
}
else
{
message = "No message sent";
}
request->send(SD, "/index.html", "text/html"); });
// Send a POST request to <IP>/api/control-led with a form field message set to <message> // Send a POST request to <IP>/api/control-led with a form field message set to <message>
server.on("/api/control-led", HTTP_POST, [](AsyncWebServerRequest *request) server.on("/api/control-led", HTTP_POST, [](AsyncWebServerRequest *request)
{ {
@@ -267,17 +286,34 @@ void setup()
request->send(SD, "/index.html", "text/html"); }); request->send(SD, "/index.html", "text/html"); });
// Send a POST request to <IP>/api/gettext with a form field message set to <message> // Send a POST request to <IP>/api/gettext with a form field message set to <message>
server.on("/api/gettext", HTTP_POST, [](AsyncWebServerRequest *request) server.on("/api/gettracklist", HTTP_POST, [](AsyncWebServerRequest *request)
{ {
String message; String message;
if (request->hasParam("text_box", true)) { if (request->hasParam("tracklist", true)) {
message = request->getParam("text_box", true)->value(); message = request->getParam("tracklist", true)->value();
Serial.println(message); //Serial.println(message);
nameAllTracks(message);
} else { } else {
message = "No message sent"; message = "No message sent";
} }
request->send(SD, "/index.html", "text/html"); }); request->send(SD, "/index.html", "text/html"); });
// Send a GET request to <IP>/api/gettextinput?message=<message>
server.on("/api/gettrack", HTTP_GET, [](AsyncWebServerRequest *request)
{
String message;
if (request->hasParam("singletrack"))
{
message = request->getParam("singletrack")->value();
//Serial.println(message);
nameSingleTrack(message);
}
else
{
message = "No message sent";
}
request->send(SD, "/index.html", "text/html"); });
// Send a POST request to <IP>/api/control-deck with a form field message set to <message> // Send a POST request to <IP>/api/control-deck with a form field message set to <message>
server.on("/api/control-deck", HTTP_POST, [](AsyncWebServerRequest *request) server.on("/api/control-deck", HTTP_POST, [](AsyncWebServerRequest *request)
{ {
+47 -13
View File
@@ -10,23 +10,57 @@
#define PLAY 0x2A #define PLAY 0x2A
#define PAUSE 0x29 #define PAUSE 0x29
#define STOP 0x28 #define STOP 0x28
#define PREV 0x20 // geraten #define PREV 0x20
#define NEXT 0x21 #define NEXT 0x21
// IR commands (Sony 20bit) #define MINUS 0x4B
#define Q 0x41
#define W 0x47
#define E 0x1A
#define R 0x42
#define T 0x44
#define Z 0x4A
#define SPACE 0x4C #define SPACE 0x4C
#define PERIOD 0x4D
#define COMMA 0x4E #define COMMA 0x4E
#define SLASH 0xA
#define QUESTION 0x26
#define EXCLAMATION 0x27
#define BRACKETOPEN 0x33
#define BRACKETCLOSE 0x34
#define NAME 0x3C
#define CHAR 0x36
#define NUM 0x37
#define CLEAR 0xF
#define keyA 0x1D
#define keyB 0x1E
#define keyC 0x1F
#define keyD 0x1B
#define keyE 0x1A
#define keyF 0x0
#define keyG 0x1
#define keyH 0x2
#define keyI 0x3
#define keyJ 0x4
#define keyK 0x5
#define keyL 0x6
#define keyM 0x7
#define keyN 0x8
#define keyO 0x9
#define keyP 0x40
#define keyQ 0x41
#define keyR 0x42
#define keyS 0x43
#define keyT 0x44
#define keyU 0x45
#define keyV 0x46
#define keyW 0x47
#define keyX 0x48
#define keyY 0x49
#define keyZ 0x4A
// IR commands (Sony 20bit)
// old commands // old commands
#define EJECT 0x69E // #define EJECT 0x69E
// #define POWER 0xA9E // #define POWER 0xA9E
#define DISPLAY 0x19E /* #define DISPLAY 0x19E
#define SCROLL 0x99E #define SCROLL 0x99E
#define CONTINUE 0xB9E #define CONTINUE 0xB9E
#define SHUFFLE 0x79E #define SHUFFLE 0x79E
@@ -66,15 +100,15 @@
#define NAME 0x3DE #define NAME 0x3DE
#define CHAR 0x6DE #define CHAR 0x6DE
#define NUM 0xEDE #define NUM 0xEDE
#define CLEAR 0xF1E #define CLEAR 0xF1E */
// #define PLAY 0x55E // #define PLAY 0x55E
// #define PAUSE 0x95E // #define PAUSE 0x95E
// #define STOP 0x15E // #define STOP 0x15E
// #define AMSPREV 0x05E // #define AMSPREV 0x05E
// #define AMSNEXT 0x85E // #define AMSNEXT 0x85E
#define RECORD 0xB5E /* #define RECORD 0xB5E
#define REWIND 0xD5E #define REWIND 0xD5E
#define FASTFORWARD 0x35E #define FASTFORWARD 0x35E
#define TREC 0x0DE #define TREC 0x0DE
#define MUSICSYNC 0xFDE #define MUSICSYNC 0xFDE
#define NAMESELECT 0x87E #define NAMESELECT 0x87E */
+25 -15
View File
@@ -184,22 +184,8 @@
</div> </div>
</section> </section>
<span class="text-orange text-with-line">Title Editing</span>
<form action="/api/gettext" method="post" class="form">
<textarea name="text_box" rows="4" cols="50"></textarea>
<button type="submit">Submit</button>
</form>
<section> <section>
<form action="/api/gettextinput" method="get" class="form"> <span class="text-orange text-with-line">MD Function</span>
<label for="text_input">Change Title</label>
<input type="text" name="text_input" class="textinput" />
<button type="submit">Submit</button>
</form>
</section>
<section>
<span class="text-orange text-with-line">Deck Control</span>
<div class="upper-buttonbox"> <div class="upper-buttonbox">
<form action="/api/control-deck" method="post"> <form action="/api/control-deck" method="post">
<button <button
@@ -256,6 +242,30 @@
</div> </div>
</section> </section>
<section>
<form action="/api/gettracklist" method="post" class="form">
<label for="tracklist">
<span class="text-orange text-with-line"
>Track List Editing</span
></label
>
<textarea name="tracklist" rows="4" cols="50"></textarea>
<button type="submit" class="smallbutton">Submit</button>
</form>
</section>
<section>
<form action="/api/gettrack" method="get" class="form">
<label for="singletrack"
><span class="text-orange text-with-line"
>Single Title Editing</span
></label
>
<input type="text" name="singletrack" class="textinput" />
<button type="submit" class="smallbutton">Submit</button>
</form>
</section>
<section> <section>
<span class="text-orange text-with-line" <span class="text-orange text-with-line"
>20 Bit Keyboard Input Test</span >20 Bit Keyboard Input Test</span