Puis-je utiliser SerialPort.Écrire pour envoyer le tableau d'octets
Documentation de SerialPort
Write
dit que
Par défaut, SerialPort utilise ASCIIEncoding pour coder les caractères.
ASCIIEncoding code pour tous les caractères supérieurs à 127 comme (char)63 ou
'?'. À l'appui de caractères supplémentaires dans cette gamme, le Codage du jeu de
UTF8Encoding, UTF32Encoding, ou UnicodeEncoding.
Voir aussi ici. Est-ce à dire que je ne peux pas envoyer de tableau d'octets à l'aide de write
?
Oui, vous pouvez msdn.microsoft.com/en-us/library/ms143551(v=vs. 110).aspx
Oui mais c'est le doc qui dit "ASCIIEncoding code pour tous les caractères supérieurs à 127 comme (char)63 ou '?'. "- donc, c'est un peu la confusion entre ce qui est pourquoi j'ai demandé à
Si vous continuez à lire, vous verrez que vous pouvez modifier l'encodage. C'est la bien nommée propriété de Codage du port série.
Donc si je change l'encodage UTF8, je devrais être en mesure d'envoyer le tableau d'octets?
Btw. Pensez-vous que cette mise en œuvre est raisonnable: forums.codeguru.com/showthread.php?182234-serial-ports-C?
Oui mais c'est le doc qui dit "ASCIIEncoding code pour tous les caractères supérieurs à 127 comme (char)63 ou '?'. "- donc, c'est un peu la confusion entre ce qui est pourquoi j'ai demandé à
Si vous continuez à lire, vous verrez que vous pouvez modifier l'encodage. C'est la bien nommée propriété de Codage du port série.
Donc si je change l'encodage UTF8, je devrais être en mesure d'envoyer le tableau d'octets?
Btw. Pensez-vous que cette mise en œuvre est raisonnable: forums.codeguru.com/showthread.php?182234-serial-ports-C?
OriginalL'auteur | 2015-09-30
Vous devez vous connecter pour publier un commentaire.
Vous êtes confus méthodes de lecture/écriture
string
s ouchar
s, avec des méthodes de lecture/écriturebytes
.E. g., lorsque vous appellerai ça:
port.Write("абв")
vous aurez "???" (
0x3F
0x3F
0x3F
) dans le tampon du port par défaut. D'autre part, cet appel:va écrire la séquence
0xE0
0xE1
0xE2
directement, sans remplacer octets à0x3F
valeur.UPD.
Voyons dans le code source:
Voyez-vous la différence?
La méthode, qui accepte
string
, convertit les chaînes à unebyte
tableau, à l'aide codage en cours pour le port. La méthode, qui acceptebyte
tableau, écrit directement à un flux de données, qui est un wrapper autour de l'API native.Et oui, la documentation imbéciles.
Non, ce serait un comportement bizarre. Je vais mettre à jour la réponse.
Ok merci. Peut-être que vous pouvez me donner quelques conseils ici: stackoverflow.com/questions/32859276/..., je n'arrive pas à obtenir la bonne réponse. Devrais-je essayer SerialPort ou aller avec PInvoke?
commenté lié question, mais je pense, qu'il sera plus utile, si vous posterai un problème spécifique.
J'ai répondu à votre commentaire, voir que. Oui, mais je ne suis pas allée à l'essai de la partie encore. Parce qu'il y a certains de lecture/écriture méthodes j'ai besoin d'écrire. Première approche de la sélection
OriginalL'auteur Dennis
Ce
et ce
résultat sera le même octets transmis. Dans le dernier cas le Codage du port série pourrait être n'importe quoi.
Le port série de l'encodage uniquement les questions pour les méthodes lire ou écrire des chaînes.
Oui, il le fait et la valeur par défaut pour le port est en ASCII. Vous pouvez modifier l'encodage.
OriginalL'auteur dbasnett