Visual basic 2010- com port

Software potřebné k práci s elektronikou

Moderátor: Moderátoři

Zpráva
Autor
termit256
Příspěvky: 10071
Registrován: 06 pro 2007, 01:00

#31 Příspěvek od termit256 »

Mam dojem ze ty odpovedi tim crlf i zacinaji. Rychlejsi nez se prokousavat manualem bude, mrknout se v terminalu co z toho vlastne leze.

Uživatelský avatar
scorpions-cz
Příspěvky: 1760
Registrován: 19 bře 2011, 01:00
Bydliště: Jižní Čechy Dačicko

#32 Příspěvek od scorpions-cz »

Díky kluci :lol: příjem i odesílání nějak funguje. Až přijde GSM modul (už je v ČR) budu zkoušet dál.
ještě bych se zeptal na 2 věci:
Ve VB je komponenta v ToolBox /Components/ SerialPort. Je nějak využitelná při této mé komunikaci?
A za druhé, vypsat seznam dostupných COM portů umím, ale dá se nějak programově zjistit co je na nich pověšeno? Tak jako např. ve správci zařízení?
Dík.

Uživatelský avatar
scorpions-cz
Příspěvky: 1760
Registrován: 19 bře 2011, 01:00
Bydliště: Jižní Čechy Dačicko

#33 Příspěvek od scorpions-cz »

Tak mi dnes pošťák doručil tento GSM modul (teda rovnou dva)
https://www.aliexpress.com/item/32951642996.html
Přes terminál HERCULES 3,2,8 vše fungovalo na první dobrou. Odeslání SMS v pohodě.
Jenom mě překvapily dvě věci:
Když dám dotaz na operátora, tak mi u vodafonu se stále hlásí jako OSKAR.
A u tohoto terminálu nemusím zadávat tu ukončovací sekvenci CRLF a ani se mi při příjmu nezobrazuje.
O víkendu zkusím komunikaci přes VB.

termit256
Příspěvky: 10071
Registrován: 06 pro 2007, 01:00

#34 Příspěvek od termit256 »

Pri prijmu se CRLF v terminalu jevi jako odradkovani, pri vysilani ho posles stiskem enteru.
Zobraz si to v hexu a uvidis jestli to tam mas nebo ne.

Uživatelský avatar
scorpions-cz
Příspěvky: 1760
Registrován: 19 bře 2011, 01:00
Bydliště: Jižní Čechy Dačicko

#35 Příspěvek od scorpions-cz »

Vyzkouším, dík.

Uživatelský avatar
scorpions-cz
Příspěvky: 1760
Registrován: 19 bře 2011, 01:00
Bydliště: Jižní Čechy Dačicko

#36 Příspěvek od scorpions-cz »

Tak jsem zase trochu chytřejší :lol: páč už umím z VB poslat SMS na dané číslo. Ale zase ta diakritika :evil:
Pokud nepoužiju to kódování 1250 tak se zobrazují jen otazníky( za písmena s diakritikou ) . Pokud tam to kódování dám, tak ve výpisu odeslaného, je to v pořádku, ale na telefonu se mi zobrazují jiné znaky. Např. za Í jen I a za Č se zobrazí E.
Kde mám hledat chybu? V telefonu nebo někde v nastavení toho modulu?
Jinak jsem to zkoušel na 2 telefony, kam normálně SMS s diakritikou chodí v pohodě.
Modul je s SIM800C
Dík za rady.

termit256
Příspěvky: 10071
Registrován: 06 pro 2007, 01:00

#37 Příspěvek od termit256 »

Tak s tim si uzijes.
Musis prepnout modem do rezimu UCS2 a budes muset pomoci konverzni tabulky ty znaky z 1250 do UCS2 prekodovat protoze UCS2 je dvoubajtovy format znaku. SMS se ti zkrati na 70 znaku, mam pocit ze tam byla i nejaka promenliva delka znaku a podobne zhovadilosti. Nektere mobily misto UCS2 pouzivaji kodovani UTF-16 ktere by melo byt snad podobne, v cem se obe lisi ale netusim. Musis u prijatych zprav rozlisit jestli mas klasicke 7bitove kodovani, nebo tyhle 16bitove a podle toho znaky dekodovat.

Osobne ti radim v zajmu zachovani dusevniho zdravi se na diakritiku v sms vykaslat.

Uživatelský avatar
scorpions-cz
Příspěvky: 1760
Registrován: 19 bře 2011, 01:00
Bydliště: Jižní Čechy Dačicko

#38 Příspěvek od scorpions-cz »

AHA tak to se na to asi fakt vybodnu, aspoň zatím. Udělám jen kontrolu délky SMS aby neodcházely zbytečně 2.

Uživatelský avatar
scorpions-cz
Příspěvky: 1760
Registrován: 19 bře 2011, 01:00
Bydliště: Jižní Čechy Dačicko

#39 Příspěvek od scorpions-cz »

Ještě bych se zeptal jak funguje ve VB TIMER. Používat ho trochu umím, ale zajímalo by mě, jestli jede jakoby paralelně s programem, nebo po té nastavené době se program zastaví, vykoná se procedura v TIMERu a program dál pokračuje.
Jde mi o to kontrolovat (tak každých 15 sec)připojení SIM800 k síti a kontrolovat a zobrazovat sílu signálu a to jsem chtěl udělat TIMERem ,ale zároveň se může stát, že modul bude zrovna odesílat SMS, tak aby se to nějak nepohádalo :o

Uživatelský avatar
FHonza
Příspěvky: 1443
Registrován: 20 lis 2012, 01:00
Bydliště: Praha

#40 Příspěvek od FHonza »

Neznám tak dobře VB, ale ve všech ostatních jazycích (C#, Delphi, ...) to obaluje pradávný timer z Windows API. Takže bych se nebál, určitě se program nepřeruší. Stále vše poběží v jednom vlákně. Nevýhodou je, že přesně s tím čas neodměříš (což je ve Windows obecně problém).

Uživatelský avatar
scorpions-cz
Příspěvky: 1760
Registrován: 19 bře 2011, 01:00
Bydliště: Jižní Čechy Dačicko

#41 Příspěvek od scorpions-cz »

Nejde mi o přesný odměření času, ale o to když bude hlavní program něco zapisovat do portu, otevírat, zavírat port ap. a v ten samý okamžik se začne vykonávat procedura timeru, kde se bude s portem taky komunikovat, zda se to nějak nebude ovlivňovat.

Uživatelský avatar
FHonza
Příspěvky: 1443
Registrován: 20 lis 2012, 01:00
Bydliště: Praha

#42 Příspěvek od FHonza »

Myslím že by nemělo. Ale můžeš na začátku každého zápisu nastavit nějakou proměnou jako příznak. Na konci jí pak zas shodíš. A před začátkem každé manipulace na portu tu proměnou testovat.

Uživatelský avatar
scorpions-cz
Příspěvky: 1760
Registrován: 19 bře 2011, 01:00
Bydliště: Jižní Čechy Dačicko

#43 Příspěvek od scorpions-cz »

Dík. Budu to testovat a uvidím. 8O

termit256
Příspěvky: 10071
Registrován: 06 pro 2007, 01:00

#44 Příspěvek od termit256 »

Tu spravu kolizi pristupu k HW si tam udelej vzdycky, idealne i s nejakymi stupni priorit. Nemusi to byt jen ten timer, ale i nejake jine preruseni, akce vyvolana uzivatelem, jine vlakno tveho programu, nebo i to same pokud nebudes chtit cekat az prijde odpoved z modemu apod. Predejdes tim spouste necekanych neprijemnosti, ktere se blbe hledaji, protoze ty kolize se budou objevovat zridka a nahodne.

Uživatelský avatar
scorpions-cz
Příspěvky: 1760
Registrován: 19 bře 2011, 01:00
Bydliště: Jižní Čechy Dačicko

#45 Příspěvek od scorpions-cz »

Třeba jednoduše, když budu komunikovat s portem v hlavním programu, tak vypnu timer (je mi jedno, zda se síla signálu aktualizuje za 15 nebo 18 sec) a potom ho zase zapnu?

Odpovědět

Zpět na „Software“