- Honor Magic8 Pro - bevált recept kölcsönvett hozzávalókkal
- Honor Magic5 Lite - fiatalít az új ruhám?
- Galaxy Buds4/Buds4 Pro: demómodelleken az új szárkialakítás
- Okosóra és okoskiegészítő topik
- Xiaomi 15T - reakció nélkül nincs egyensúly
- Yettel topik
- Google Pixel topik
- Vedd szemügyre a Poco X8-akat!
- Redmi Note 13 Pro 5G - nem százas, kétszázas!
- Samsung Galaxy Watch8 és Watch8 Classic – lelkes hiperaktivitás
Ú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!
- Óbudai Egyetem (volt BMF)
- Bittorrent topik
- Arc Raiders
- PCI Express 7.0 – Brutális sebesség, de minek?
- Tesla topik
- Alkoholista nevelde
- Honor Magic8 Pro - bevált recept kölcsönvett hozzávalókkal
- Motoros topic
- Amlogic S905, S912 processzoros készülékek
- Alternatív kriptopénzek, altcoinok bányászata
- További aktív témák...
- Beszámítás! HP Elitebook 8 G1i 14 FHD notebook - Ultra 5 235U 16GB DDR5 256GB SSD Intel IGP W11
- Beszámítás! MSI Gaming Cyborg A15 FHD Gamer notebook - R5 240 16GB DDR5 512GB SSD RTX 5050 8GB
- Beszámítás! Asus TUF A17 FA707RR FHD Gamer notebook - R7 6800H 16GB DDR5 512GB SSD RTX 3070 8GB W11
- Beszámítás! Asus TUF A16 FA608UH FHD Gamer notebook - R7 260 16GB DDR5 512GB SSD RTX 5050 8GB
- Beszámítás! Lenovo LOQ 17IRX10 FHD Gamer notebook - i7 13650HX 24GB DDR5 1TB SSD RTX 5050 8GB
- iPhone 17 Pro Max Mélykék - Bontatlan !! www.stylebolt.hu - Apple eszközök és tartozékok !!
- Beszámítás! VALVE Steam Deck LCD 512GB SSD kézikonzol garanciával hibátlan működéssel
- Dell Latitude E7270,12.5",FHD,i7-6600U,8GB DDR4,256GB SSD,WIN11
- Telefon felvásárlás!! Samsung Galaxy A12/Samsung Galaxy A22/Samsung Galaxy A32/Samsung Galaxy A52
- Wacom Bamboo One CTF-430 rajztábla
Állásajánlatok
Cég: Laptopműhely Bt.
Város: Budapest

