2010-07-16 13 views
4

J'ai des données binaires brutes reçues de l'appareil. Je voudrais afficher ces données quelque chose comme les éditeurs HEX - afficher les valeurs hexadécimales, mais aussi afficher les caractères correspondants.Afficher des caractères spéciaux (non imprimables) dans le contrôle WPF

J'ai trouvé des polices qui ont des caractères pour les codes ASCII 0 - 32, mais je n'arrive pas à les faire apparaître à l'écran.

J'ai essayé avec WPF listbox, itemscontrol et textbox.

Y a-t-il un réglage qui peut faire fonctionner cela?
Ou peut-être un contrôle WPF qui montrera ces caractères?

Edit:
Après une réflexion et d'essais, seuls les caractères qui font problèmes saut de ligne, de page, retour chariot, backspace, onglet horizontal et vertical. Comme solution rapide, j'ai décidé de remplacer ces caractères par le caractère ASCII 16 (10HEX). J'ai testé cela avec des fichiers ASCII, UTF-8 et Unicode et cela fonctionne avec ces trois formats.

est ici regex que j'utilise pour cela:

rawLine = Regex.Replace(inputLine, "[\t\n\r\f\b\v]", '\x0010'.ToString()); 

Il remplace toutes les occurrences de ce 6 caractères problématiques avec un signe boxy. Cela montre que ce n'est pas un caractère "régulier imprimable" et ça marche pour moi.

+3

Je me rends compte que c'est un très vieil article, mais voici quand même: quelles polices avez-vous trouvé qui incluent des graphiques pour les codes de contrôle non imprimables? Je développe une application que j'ai besoin d'afficher à l'utilisateur ces caractères cachés (un peu comme la vue de Notepad ++ -> Afficher le symbole -> Afficher tous les caractères). Plus particulièrement, j'ai besoin d'une représentation graphique pour les caractères NULL, STX, ETX, ENQ, etc. généralement trouvés dans les flux de données en série. –

+0

Je ne suis pas tout à fait sûr, mais je pense que c'était Courier New. Ou peut-être Consolas. Mais définitivement la police non proportionnelle. Désolé, je ne peux pas vérifier puisque je n'ai plus accès à ce projet. – zendar

Répondre

2

Je ne sais pas si c'est exactement ce que vous voulez, mais je vous recommande de jeter un oeil dans le projet #develop. Leur éditeur peut afficher des espaces, des tabulations et des marqueurs de fin de ligne.

J'ai regardé rapidement le code source et dans l'espace de noms ICSharpCode.AvalonEdit.Rendering la classe SingleCharacterElementGenerator, semble faire ce que vous voulez.

+0

Merci, je vais vérifier cela – zendar

Questions connexes