Stránka 1 z 1

UART procesoru nekomunikuje s PC

Napsal: 20 črc 2008, 14:56
od kony2807
Dobrý den !
Pevě něřím tomu , že alspoň někdo z vás bude mít spolehlivou .DLL knihovnu a její implementaci pro Visual Basic 6.0 , která je schopná posílat a přijímat data po RS-232 , já už se totiž druhým týdnem trápím s tím , že mi nejede odesílání dat z programu na jednu z mých HW aplikací . Zajímave ovšem je , že pokud de pokusím navázat komunikaci pomoci hyperterminálu ,či jiného podobného programu , vše proběhne hladce ... Konfigurace : 19200 Bd , N , 8 , 1 . Doposud jesm používal s úspěchem kihovnu přiloženou ke knize : Využití rozhrání PC pod Windows , nevím však proč tato aplikace prostě neběží jak má ... Možná to bude způsobeno tím , že program procesoru v HW je napsán tak , že datový blok musí být v přesném znění , jinak se vrátí na začátek příjmu , čímž se ale vylučujou chyby přímu , které by ovšem mohy pro aplikaci býti osudové :( .
Reakce případných lidů ochotných pomoci bych poprosil na ICQ , má reace bude o to rychlejší .
Díky Kony !

Napsal: 20 črc 2008, 18:50
od Sunmay
Já používám už nějaký ten rok RSCOM.dll nebo port.dll a obě fungují bez problémů...

Napsal: 20 črc 2008, 20:15
od DRAKE
Podle mne je nejlepsi pouzit komponentu microsoftu, staci na panelu objektui kliknout pravim tlacitkem dat Components... zaškrtnout Microsoft Comm Control 6.0 a dat OK. V tom panelu se ti objevi ikonka telefonu tu si vlozis do projektu. Dal uz budes jenom odchytavat udalosti

Napsal: 20 črc 2008, 20:46
od kony2807
Ten nápad s komponentou se mi zamlová , ale chbí mi k ní obsluha , nebyl by si tak laskav a dal sem kousek svého kódu ? Bez toho si asi totiž moc na UARTA procíkovi moc nepošlu ;) .
Díky Kony !

Napsal: 20 črc 2008, 21:33
od DRAKE
No zkus tohle, neni to nic moc uz jsem s tim dlouho nedelal. Je to rutina pro prijem dvou bajtoveho slova, sData je string, data je double nebo integer to je fuk. Nastavit si port doufam zvladnes.

Public Sub MSComm1_OnComm()

If MSComm1.CommEvent = comEvReceive Then

sData = MSComm1.Input 'prijem 2bytu
data = Asc(Mid$(sData, 2, 1)) 'prevod na double
data = data + 256 * Asc(Mid$(sData, 1, 1)) '
Label1.Caption = data 'hodi cislo do labelu
End if

End Sub

Napsal: 21 črc 2008, 09:56
od kony2807
Fajn , ale mi jde hlavě o odesílání :D ...
(Zkusil jsemm přiřadit mu byte do MScomm1.output , ale vyřvává po mě , že je pouze pro zápis ... (a co sem asi s tím dělal :D )
btw :

Kód: Vybrat vše

  data = data + 256 * Asc(Mid$(sData, 1, 1)) '  
nemělo by tam být místo "+" zapsáno "&" ? (tedy jestli jsem pochopil záměr sepsat za sebe do jedné dvě proměnné , s tím + by mohl VB hlásit err : type mischmash - pokusil by se o jejich numerický součet )

Napsal: 21 črc 2008, 10:50
od Ragnol
Sunmay píše:Já používám už nějaký ten rok RSCOM.dll nebo port.dll a obě fungují bez problémů...


Tak s touhle dll mám docela problém. Komunikace mi dost často padala a bylo potřeba znova otevřít port. Dělalo mi to jen u usb převodníků na rs232. Přitom třeba v hyperterminálů to beží bez pádů.

Napsal: 21 črc 2008, 10:54
od kony2807
Ragnol píše:
Sunmay píše:Já používám už nějaký ten rok RSCOM.dll nebo port.dll a obě fungují bez problémů...


Tak s touhle dll mám docela problém. Komunikace mi dost často padala a bylo potřeba znova otevřít port. Dělalo mi to jen u usb převodníků na rs232. Přitom třeba v hyperterminálů to beží bez pádů.


Přesně toto se mi vlastně stává , otevřu port , odešlu jeden blok a spadne a navíc ještě 10x spomalí timer ....

Napsal: 21 črc 2008, 15:33
od Makovec
Doporučoval bych se na nějaký pochybný knihovny vykašlat , používat čisté API.Čtení a odesílání dat v samostatném threadu - timer nepoužívat.

Výhody:Hned hotový.stoprocentně funkční

Napsal: 21 črc 2008, 15:41
od kony2807
Nepoužívat timer ? no ale tedy jak si mám zajistit vzorkování z databáze , zda li není náhodou na řadě nějaká sekvence na výstup co 10ms ?

Napsal: 21 črc 2008, 17:22
od Makovec
Upřesnění: nepoužívat timer na komunikaci programu s HW