< návrat zpět

MS Excel


Téma: MScomm1 rss

Zaslal/a 3.4.2013 8:19

Ahojte,
snažím se pomocí exelu a maker komunikovat a zpracovat informace z linky RS232 a potřeboval bych, aby pokud bude něco v bufferu aby se mě pustilo automaticky makro, nevíte jak toho dosáhnout? Nebo jak třeba načítat buffer na pozadí ale tak, aby uživatel mohl normálně pracovat? využívám modulu MScomm. Děkuji za odpověď

Zaslat odpověď >

Strana:  « předchozí  1 2
#012686
avatar
Otevřel jsem nový dokument, vložil jsem do UserForm funkci a přidal:
Private Sub MScomm1_OnComm()
MsgBox ("asfffasd")
If MSComm1.CommEvent = comEvReceive Then
Cells(1, 1) = MSComm1.Input
'Udělej něco (což může klidně být v proceduře VSTUP_CHANGE)
End if
End Sub

Vložil jsem jeden Modul, který obsahuje:
Sub Auto_Open()
MsgBox ("Start")
MSComm1.Settings = "115200,N,8,1"
MSComm1.RThreshold = 1
MSComm1.CommPort = 6
MSComm1.PortOpen = True
End Sub

Při spuštění vyhodí MsgBox ten potvrdím a pak se zastaví na prvním řádku s MSComm1 takže se port neotevře, s UserForm nemám zkušenosti takže jestli je třeba nějak načíst nebo inicializovat ručně tak to tam určitě nemám. Podobnou věc to dělalo když jsem měl špatně nastavený odkaz na list s MScomm1. Klidně se ptej na co chceš, jsem rád za každou radu.citovat
#012687
Jeza.m
pokud to máš v modulu, tak bych řekl, že tam musíš mít odkaz ještě na ten Userform, např.:
userform1.MSComm1.PortOpen = True
ty 3 řádky nad tím bych úplně vynechal, to nastavíš kliknutím na ten prvek s telefonem pravým tlačítkem a volbou properties.

Jinak modul bych klidně vynechal, spíš bych ten portopen strčil přímo do userformu, do loadu ...

Private Sub UserForm_Initialize()
MSComm1.PortOpen = True
End Sub


a pak ho teda i zavřít
Private Sub UserForm_Terminate()
MSComm1.PortOpen = False
End Sub


M@citovat
#012688
avatar
Další pokrok, jsem schopen zavřít a otevřít port z modulu, následující kód je z modulu, ale OnComm nejde. Pokud je formát např pro otevření: MSComm1.PortOpen = True tak hodí chybu, musí to byt takže je to furt nějak provázané s tím UserForm1
Private Sub UserForm1_Initialize() 'otevřu port
UserForm1.MSComm1.PortOpen = True
End Sub
Private Sub MSComm1_OnComm() 'nefunguje nechce vzít název UserForm1.MSComm1_OnComm()
MsgBox ("asfffasd") 'nelíbí se mu tečka
If UserForm1.MSComm1.CommEvent = comEvReceive Then
MsgBox ("asfffasd")
Cells(1, 1) = UserForm1.MSComm1.Input
'Udělej něco (což může klidně být v proceduře VSTUP_CHANGE)
End If
End Sub
Private Sub UserForm_Initialize() 'Zavřu port
UserForm1.MSComm1.PortOpen = False
End Sub
citovat
#012689
Jeza.m
Na modul se úplně vykašli a do userformu vlož 3 procedury:

1) otevření při loadu
Private Sub UserForm_Initialize()
MSComm1.PortOpen = True
End Sub

2) zpracování přijdou-li data
Private Sub MSComm1_OnComm()
If MSComm1.CommEvent = comEvReceive Then
MsgBox ("přijata data: " & MSComm1.Input)
End If
End Sub

3] zavření portu s userformem
Private Sub UserForm_Terminate()
MSComm1.PortOpen = False
End Sub


M@citovat
#012690
avatar
Mám to přesně jak jsi napsal a port se ani neotevře.citovat
#012691
Jeza.m
zkus mi to poslat na meil, jinak už nevím :-)citovat

Strana:  « předchozí  1 2

Uživatelské menu

Nejste přihlášen(a)
avatar\n

Menu

Formulář Faktura

Formulář Faktura IV

Oblíbený formulář Faktura byl vylepšen a rozšířen.
Více se dočtete zde.

Helios iNuvio

Používáte podnikový systém Helios iNuvio? Potřebujete pomoci se správou nebo vyvinout SQL proceduru? Více informací naleznete na stránce Helios iNuvio.

On-line nástroje