- sziku69: Fűzzük össze a szavakat :)
- D1Rect: Nagy "hülyétkapokazapróktól" topik
- Luck Dragon: Asszociációs játék. :)
- ubyegon2: Airfryer XL XXL forrólevegős sütő gyakorlati tanácsok, ötletek, receptek
- Ivqkzy-: 2. gépem
- Magga: PLEX: multimédia az egész lakásban
- Steven: Sokat utazó kávéfüggők ide!
- eBay-es kütyük kis pénzért
- droidic: EA GAMES – élő emberrel a supportban 2025 ben
- btz: Internet fejlesztés országosan!
Ú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
Hirdetés
● ha kódot szúrsz be, használd a PROGRAMKÓD formázási funkciót!
- Kerékpárosok, bringások ide!
- Formula-1
- AMD Ryzen 9 / 7 / 5 / 3 5***(X) "Zen 3" (AM4)
- HDD probléma (nem adatmentés)
- Csak semmi szimmetria: flegma dizájnnal készül a Nothing Phone (3)
- TCL LCD és LED TV-k
- PlayStation 5
- Bittorrent topik
- Vezetékes FEJhallgatók
- Samsung Galaxy Watch7 - kötelező kör
- További aktív témák...
- Lenovo ThinkPad T14 Gen 5 Ultra-I7/64GB/512SSD/Érintőképernyő/garancia
- Lenovo ThinkPad T14 G3 I5-1245U/32GB/1TBSSD/Érintőképernyő/Garanciás.
- Dell Precision Munkaállomás 7750 17.3" i7-10850H/32GBRAM/1TBSSD/RTX3000/WIN11PRO
- EREDETI Apple Watch ULTRA óraszíjak (BLACK TITANIUM) - 49mm
- Apple Watch ULTRA 2 49 mm - Black Titan, Black Ocean Band - MAKULÁTLAN! - 3 ÉV GARANCIA
- Telefon felvásárlás!! Honor 90 Lite/Honor 90/Honor Magic5 Lite/Honor Magic6 Lite/Honor Magic5 Pro
- ÁRGARANCIA!Épített KomPhone i5 14600KF 32/64GB DDR5 RTX 4070Ti Super GAMER PC termékbeszámítással
- Tablet felvásárlás!! Apple iPad, iPad Mini, iPad Air, iPad Pro
- Eredeti Lenovo 300W töltők - ADL300SDC3A
- AKCIÓ! Gigabyte H610M i5 12400F 32GB DDR4 512GB SSD RTX 3060Ti 8GB Rampage SHIVA Be Quiet! 730W
Állásajánlatok
Cég: Promenade Publishing House Kft.
Város: Budapest
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest