Oppure

Loading
21/07/10 11:10
flappy64
ciao,
sono nuovo un saluto a tutti.

linguaggio VB6.

sto usando il controllo MSComm per inviare dei dati ad un azionamento a 19200 Baud,questo è il massimo che l'azionamento mi concede.

la stringa che devo inviare è questa "w01 04 300", tutto funziona alla perfezione.

il mio problema è che tale stringa va inviata ogni 10 millisecondi, e usando il controllo MSComm
non riesco a tenere tale parametro, è troppo lento.

è possibile usare un altro sistema, esiste un altro modo di cominicare con la seriale
a tale volocita?

grazie

Flavio
aaa
21/07/10 15:09
Tanto per cominciare, Windows non può gestire intervalli di tempo così brevi.

In secondo luogo, a quale velocità comunica la seriale con il tuo dispositivo?
21/07/10 16:35
Alfonso
aaa
21/07/10 18:02
flappy64
Postato originariamente da nessuno:

Tanto per cominciare, Windows non può gestire intervalli di tempo così brevi.

In secondo luogo, a quale velocità comunica la seriale con il tuo dispositivo?


ciao,

se intendi la velocita, a 19200 baud, lo avevo stritto......

Flavio
aaa
21/07/10 18:28
Postato originariamente da flappy64:

se intendi la velocita, a 19200 baud, lo avevo stritto......


Mi era sfuggito ...

Comunque, quello che volevo dirti è che non potrai lavorare ad intervalli minori di 12-15 ms con il normale timer (come quello implementato in VB6).

Potresti utilizzare un timer ad alta risoluzione (ma non lo farei in VB6, semmai in C).
Per farlo, dovrai usare le API

QueryPerformanceCounter
msdn.microsoft.com/en-us/library/…(VS.85).aspx

QueryPerformanceFrequency
msdn.microsoft.com/en-us/library/…(v=VS.85).aspx



21/07/10 18:42
flappy64
Postato originariamente da nessuno:

Postato originariamente da flappy64:

se intendi la velocita, a 19200 baud, lo avevo stritto......


Mi era sfuggito ...

Comunque, quello che volevo dirti è che non potrai lavorare ad intervalli minori di 12-15 ms con il normale timer (come quello implementato in VB6).

Potresti utilizzare un timer ad alta risoluzione (ma non lo farei in VB6, semmai in C).
Per farlo, dovrai usare le API

QueryPerformanceCounter
msdn.microsoft.com/en-us/library/…(VS.85).aspx

QueryPerformanceFrequency
msdn.microsoft.com/en-us/library/…(v=VS.85).aspx





Grazie,

ma il problema non ' il timer, la routine è dentro ad un loop,
la routine legge un encoder che trasmette i dati ad un azionamento.

senza la trasmissione seriale funziona perfettamete, ma se inserisco in questo loop
la routine della seriale il tutto rallenta drasticamente.....

questa e la stringa che mi rallenta il tutto:

Stringa = "p01" & " " & Ottica(N1)
MSComm1.Output = Stringa


Flavio
aaa
21/07/10 18:45
Il problema è il VB6 ... queste istruzioni

Stringa = "p01" & " " & Ottica(N1)
MSComm1.Output = Stringa

sono pesanti (la gestione delle stringhe soprattutto)
21/07/10 19:45
flappy64
Postato originariamente da nessuno:

Il problema è il VB6 ... queste istruzioni

Stringa = "p01" & " " & Ottica(N1)
MSComm1.Output = Stringa

sono pesanti (la gestione delle stringhe soprattutto)


che sia pesante lo avevo notato, hai qualche consiglio?

Grazie

Flavio
aaa