2012-03-03 1 views
0

Je veux transférer des données entre un câble Atmega168 via RS232 vers mon PC pour l'éditer! Mais l'Atmega est trop rapide pour gérer l'événement SerialPort.DataReceived. Existe-t-il une proposition ou une instruction permettant d'accélérer le port série ou d'utiliser un port série non géré?SerialPort Performance

également le code existant qui ne fonctionne pas, il suffit d'ajouter des entrées à une liste (de chaînes)

Private Sub Me_DataReceived() Handles Me.DataReceived 
    DataLines.Add(Me.ReadLine().Trim) 
End Sub 
+0

Quel type de handshaking utilisez-vous? Xon/Xoff, RTS/CTS ou aucun? –

+0

aucun ... Devrais-je changer de poignée de main ??? – ribben

+0

Si vous n'en utilisez aucun, l'appareil expéditeur continuera à décharger des données dans votre programme, provoquant un dataloss. Si vous utilisez le handshaking, vous devrez le configurer sur les deux appareils, et si vous utilisez RTS/CTS, vous devrez également changer votre câble série. Votre seule autre option consisterait à ralentir le débit en bauds à un point tel que vous ne perdez plus de données. –

Répondre

0

J'ai eu ce problème une fois résolu en ajoutant un petit morceau de code C++ qui lit les données de le port série à mon projet, puis en ajoutant une référence à cette bibliothèque dans mon projet C#. Le code C++ fonctionnait plus de 10 fois plus vite. Quel débit utilisez-vous?