int i = 1; // Gönderilecek veri
void setup() {
Serial.begin(9600); // UART iletişimi başlat
}
void loop() {
// Veriyi belirli bir formatta gönder (örneğin: [adres, veri])
Serial.print("<01,"); // Adres (örneğin: "01")
Serial.print(i); // Gönderilecek veri
Serial.println(">"); // Mesajı bitirme
i++; // Veriyi artır
delay(1000); // 1 saniye bekle
} arduino kısmında böyle bir kod yazdım seri porttan airhmı ya gidiyor aırhmı da ise 2 farklı kod yazdım birini chate yazdırdım birini kullanıcı klavuzundan bakarak ben yazdım ikisindede olmadı alt alta atıyorıum airhmı da ki kodumuda #include "stk.h"
#include "stdio.h"
char a[50];
char uartData[3000];
int i;
uartDataGet(uartData ,&i );
LabelSet("ELabel1" ,"Text" ,a); bu kodu yazdım lakin burda sanırsam adresleme olmadığı için çalışmadı chate yazdırdım o biraz daha kompleks yazdı o kodda şu şekilde #include "stk.h"
#include "stdio.h"
#include "string.h"
char uartData[3000]; // UART'tan gelen veri
int uartSize; // Veri uzunluğu
void main() {
while (1) {
// UART üzerinden veri al
uartDataGet(uartData, &uartSize);
if (uartSize > 0) { // Veri alındıysa
uartData[uartSize] = '\0'; // String terminator ekle
// Mesaj başlangıcını ve bitişini kontrol et
if (uartData[0] == '<' && uartData[uartSize - 2] == '>') {
char adres[3]; // Adres kısmı
char veri[50]; // Veri kısmı
// Adresi ve veriyi ayır
sscanf(uartData, "<%2[^,],%s>", adres, veri);
// Doğru adresse mi bak (örneğin: "01")
if (strcmp(adres, "01") == 0) {
// Alınan veriyi işle (örneğin, Label'e yazdır)
LabelSet("ELabel1", "Text", veri);
}
}
}
}
}
Uart kodunuz bu şekilde olmalı timer kısmında . Airhmi void main gibi fonksıyon tanımlayamazsınız. Tanımlıyorsanızda altta bunu çağırmanız lazım yoksa o kod hıcbır sekılde calısmaz. While diye de bir şey olmaz. Timer zamanı gelınce ısını halleder. Bu şekilde yaparsanız kod çalışır . Dediğim uygulamayı yuklersenız daha detaylı gorursunuz.
#include "stk.h"
#include "stdio.h"
#include "string.h"
char uartData[3000]; // UART'tan gelen veri
int uartSize; // Veri uzunluğu
// UART üzerinden veri al
uartDataGet(uartData, &uartSize);
if (uartSize > 0) { // Veri alındıysa
uartData[uartSize] = '\0'; // String terminator ekle
// Mesaj başlangıcını ve bitişini kontrol et
if (uartData[0] == '<' && uartData[uartSize - 2] == '>') {
char adres[3]; // Adres kısmı
char veri[50]; // Veri kısmı
// Adresi ve veriyi ayır
sscanf(uartData, "<%2[^,],%s>", adres, veri);
// Doğru adresse mi bak (örneğin: "01")
if (strcmp(adres, "01") == 0) {
// Alınan veriyi işle (örneğin, Label'e yazdır)
LabelSet("ELabel1", "Text", veri);
}
}
}