Hirdetés
- One mobilszolgáltatások
- Xiaomi 13 - felnőni nehéz
- Milyen okostelefont vegyek?
- iPhone topik
- Hivatalos a OnePlus 13 startdátuma
- Ez is egy kafa utólagos fejegység - Carpodgo T3 Pro
- Merész dizájn és új teleobjektív az iPhone 17 Pro mobilokban
- Google Pixel topik
- Nonjour: nem fordít az EU-ban az AirPods
- Előfizetés mögé zárta a Sony az Xperia egyik húzófunkcióját
Ú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!
- One mobilszolgáltatások
- Eredeti játékok OFF topik
- OLED monitor topic
- Nagyon bízik az Instinct MI450-ben az AMD alelnöke
- Hardcore café
- Xiaomi 13 - felnőni nehéz
- Parkside szerszám kibeszélő
- Autós topik látogatók beszélgetős, offolós topikja
- Kertészet, mezőgazdaság topik
- Nyíregyháza és környéke adok-veszek-beszélgetek
- További aktív témák...
- DELL Optiplex 3050 Mini PC, I5-7500T CPU, 8GB DDR4, 256GB NVMe SSD, Wifi, Bluetooth, Win 11, 2 év g,
- Lenovo Thinkcentre M710s SFF PC, I5-7500 CPU, 16GB DDR4, 256GB NVMe SSD, Win 11, Számla, 2 év garan
- ASUS PRIME A320M-K/Ryzen 3 3200G/8 gb DDR4
- Bomba ár! Lenovo ThinkPad L490 - i5-G8 I 16GB I 256SSD I 14" FHD Touch I HDMI I Cam I W11 I Gari!
- Xbox Series X sok extrával
- Dell 14 Latitude 9410 FHD IPS 2in1 Touch i7-10610U 4.9Ghz 16GB 512GB SSD Intel UHD W11 Pro Garancia
- Lenovo Thinkpad Tablet X1 Gen 3
- HIBÁTLAN iPhone 11 Pro 64GB Midnight Green -1 ÉV GARANCIA -Kártyafüggetlen, MS3372
- ÁRGARANCIA!Épített KomPhone Ryzen 7 7800X3D 32/64GB RAM RTX 5070 Ti 16GB GAMER P termékbeszámítással
- REFURBISHED és ÚJ - HP USB-C/A Universal Dock G2 docking station (5TW13AA) (DisplayLink)
Állásajánlatok
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest
Cég: CAMERA-PRO Hungary Kft.
Város: Budapest