Hirdetés
- Xiaomi 15T - reakció nélkül nincs egyensúly
- Google Pixel topik
- Megtartotta Európában a 7500 mAh-t az Oppo
- Samsung Galaxy S25 - végre van kicsi!
- Vivo X300 Pro – messzebbre lát, mint ameddig bírja
- Samsung Galaxy Z Fold7 - ezt vártuk, de…
- Xiaomi 14 - párátlanul jó lehetne
- Samsung Galaxy S25 Ultra - titán keret, acélos teljesítmény
- Samsung Galaxy S24 - nos, Exynos
- Samsung Galaxy Watch8 - Classic - Ultra 2025
Új hozzászólás Aktív témák
-
joysefke
veterán
válasz
t-shirt
#8654
üzenetére
Én úgy értettem a dolgot, hogy a gép kezdi az üzenetváltást, és a PC szemszögéből mindig
fogadás-írás-fogadás-írás stb a sorrend. Itt a PC a szerver és ha ezt a feladatot kiszervezed egy külön threadbe akkor nyugodtan lehet blokkolni azt a threadet a munkagépre történő várakozással. Persze ahogy fölöttem írták, nem ártana ide sem egy timeout...Ha blokkoló olvasással oldod meg a dolgot, akkor valahogy így nézhet ki a dolog.
(sosem volt serial portal dolgom és ezt amit válaszoltam sem tudom futtatni)Indítasz egy threadet amely minden munkacikus elején ellenőrzi, hogy szabad-e tovább futnia, ha nem, akkor rendezetten kilép. Olvas-ír-olvas-ír amíg el nem fogynak a fo_tomb-ből a parancsok.
A main() -thread nincsen blokkolva egészen a
serverThread.Join()-ig Ennél a pontnál bevárja a serverThread-et. ha a main()-en belül a serverThread befejezte előtt beállítod aserverAllowedToRun=false-ot, akkor az leállítja a soros-port threadjét.class Program
{
// dummy data
private static string[] fo_tomb = Enumerable.Range(0, 100).Select(x => "Machine command nr: " + x.ToString()).ToArray();
private static bool serverAllowedToRun = true;
public static void ComServer()
{
using (var port = new SerialPort("COM4"))
{
// ezek menjenek fgv-paraméterbe
port.BaudRate = 9600;
port.Parity = Parity.None;
port.StopBits = StopBits.One;
port.DataBits = 8;
port.Handshake = Handshake.None;
port.RtsEnable = true;
port.Open();
int n = fo_tomb.Length;
int i = 0;
while (serverAllowedToRun)
{
if (i >= n) break;
// ez a te 'mentes_valtozo' -d
// a PC olvasással kezd
// ez blokkol ameddig gép nem küld valamit amit a PC tud olvasni.
// nem pörgeti a gépet
string machineMessage = port.ReadLine();
// Ha a gép küldött üzenetet, akkor válaszolunk rá
port.WriteLine(fo_tomb[i]);
i++;
}
}
}
static void Main()
{
Thread serverThread = new Thread(ComServer);
// Érdemes lehet timeoutot megadni
// pld 10 perc: TimeSpan.FromMinutes(10);
serverThread.Join();
}
}
Új hozzászólás Aktív témák
● ha kódot szúrsz be, használd a PROGRAMKÓD formázási funkciót!
- BestBuy topik
- Viccrovat
- The Division 2 (PC, XO, PS4)
- Fizetős szoftverek ingyen vagy kedvezményesen
- Xiaomi Mi Box androidos médialejátszó 4K és HDR támogatással
- Milyen TV-t vegyek?
- Azonnali informatikai kérdések órája
- WoW avagy World of Warcraft -=MMORPG=-
- Házimozi belépő szinten
- Túra és kirándulás topic
- További aktív témák...
- Gainward GeForce RTX 4080 SUPER Python III OC
- Új Zsír Dell Inspiron 14 7441 Érintős Ultrabook Laptop -30% Snapdragon X Plus 10Mag 16/1TB SSD QHD+
- HP Spectre x360 Érintős TERVEZŐ Laptop Tab 16" -60% i7-1360P 32/2TB Intel Arc A370M 4GB UHD OLED
- ReZone Használt PC Bazár Megbízható gépek, korrekt árak.
- HP Spectre x360 Érintős Hajtogatós Laptop Tab 16" -50% i7-13700H 16/1TB Iris Xe 3K+
- GYÖNYÖRŰ iPhone 12 mini 128GB White -1 ÉV GARANCIA - Kártyafüggetlen, MS3856, 100% Akksi
- 18 éve! Billentyűzet magyarítás magyarosítás. Festés vagy lézerezés és egyebek! 3 lehetőség is van.
- HP 14 Elitebook 840 G7 FHD IPS i5-10210U 4.2Ghz 16GB 256GB SSD Intel UHD Graphics Win11 Pro Garancia
- GYÖNYÖRŰ iPhone 12 mini 256GB Red -1 ÉV GARANCIA -Kártyafüggetlen, MS3627
- GYÖNYÖRŰ iPhone 13 mini 128GB Starlight -1 ÉV GARANCIA -Kártyafüggetlen, MS3610
Állásajánlatok
Cég: Laptopműhely Bt.
Város: Budapest
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest


