2017-09-30 13 views
-1

Le projet sur lequel je travaille interfèrera avec un Netduino 3 WIFI (C# .NET micro-Framework) et une application PC (C# .NET Framework). Une caméra TTL série sera connectée à l'un des ports COM du Netduino et l'application PC se connectera à un autre port COM. Tous communiqueront via UART 8 bits. J'ai réussi à envoyer et à recevoir des octets [] entre le PC, Netduino et la caméra qui servent à envoyer et à accuser réception de commandes. L'objectif principal est de pouvoir envoyer la commande 'take image' à la caméra et de récupérer l'octet .JEPG [] revenant. Je veux commencer à recevoir les données une fois l'événement de données reçues. Je ne trouve pas beaucoup d'informations en ligne, mais d'après ce que j'ai lu, je devrais utiliser la propriété serialport.basestream, ou un constructeur Bitmap (Stream). Je ne suis pas très familier avec le concept de flux et j'espère que quelqu'un pourrait me donner des informations ou donner un exemple de la façon de mettre cela en place.Recevoir un flux .JPEG via un port série, stocker et renvoyer

+0

Le port série doit être réglé sur 8 bits sans parité. Lors de l'envoi du fichier jpeg, précedez les données binaires avec une longueur de 4 (ou 8 bits). Ensuite, envoyez simplement des données sous forme d'octets. L'extrémité de réception doit supprimer la longueur du début des données, puis lire les octets (données binaires). – jdweng

Répondre

0

Je vous suggère de définir le port ReadTimeout sur zéro et d'installer un gestionnaire sur l'événement DataReceived. Cela peut ensuite capturer et mettre en mémoire tampon vos données directement dans un tableau d'octets de la dimension correcte si vous envoyez un en-tête approprié avant d'envoyer les données (une simple somme de contrôle ne serait probablement pas non plus mauvaise). Le gestionnaire doit gérer les données en cours de traitement mais, une fois que vous avez tout reçu, vous pouvez traiter le tableau d'octets pour reconstruire le fichier jpg et le jeter. L'événement DataReceived n'est pas déclenché pour chaque octet, donc une fois que vous y êtes, vous devrez continuer à émettre des lectures sur le port jusqu'à ce qu'il renvoie zéro octet avant de quitter le gestionnaire.