J'écris l'application C# qui a besoin d'imprimer des données à l'imprimante POS STAR en utilisant RawPrinterHelper.Comment encoder des chaînes comme éditer en C#?
Mon impression fonctionne correctement, sauf lorsque j'envoie des caractères comme ŽÃ ©. Ensuite, je me trompe de données imprimées.
Jusqu'à maintenant mes recherches m'ont donné les résultats suivants.
Si je en open PowerShell bon vieux éditer et dans le fichier txt écrire mes personnages (ŽĆČĐŠ) et d'envoyer ce à l'imprimante, je reçois imprimer comme je souhaite
Je ne peux pas que répétition à l'aide Bloc-notes
Comment je peux en C# encoder ma piqûre pour ressembler à celle de l'invite de commande (EIDTor). Donc lorsque j'envoie des données à l'imprimante, il imprime des polices de désir comme il ressemble à un environnement Windows.
J'ai également essayé d'imprimer à l'aide du pilote Star et de leur exemple C# pour envoyer des données directement à l'imprimante mais sans succès.
EDIT:
je l'ai fait, et pour d'autres qui en ont généralement des difficultés d'impression directement sur les imprimantes étoile en utilisant C# ici est le code pour l'application de l'échantillon de Star IO Programming Tool pour l'utilisation de leur chauffeur.
using System;
using System.Text;
using StarMicronics.StarIO; // added as a reference from the "Dependencies" directory
// requires StarIOPort.dll, which is copied to the output directory by the Post-Build event
namespace TestEnkodera
{
class Program
{
static void Main(string[] args)
{
string portName = "LPT1";
string portSettings = string.Empty;
string print = string.Empty;
//Select code page
//Decimal 27 29 116 n
print += string.Format("{0}{1}{2}{3}{4}", (char)27, (char)29, (char)116, (char)5, Environment.NewLine);
print += "Đ Š Ž Ć Č ž ć č ć \n";
IPort port = null;
port = StarMicronics.StarIO.Factory.I.GetPort(portName, portSettings, 10 * 1000);
//byte[] command = ASCIIEncoding.ASCII.GetBytes(print); //This was orginal code provided by STAR
Encoding ec = Encoding.GetEncoding(852); //Here is way to set CODEPAGE to match with printer CODE PAGE
byte[] command = ec.GetBytes(print);
uint totalSizeCommunicated = WritePortHelper(port, command);
StarMicronics.StarIO.Factory.I.ReleasePort(port);
Console.ReadKey();
}
private static uint WritePortHelper(IPort port, byte[] writeBuffer)
{
uint zeroProgressOccurances = 0;
uint totalSizeCommunicated = 0;
while ((totalSizeCommunicated < writeBuffer.Length) && (zeroProgressOccurances < 2)) // adjust zeroProgressOccurances as needed
{
uint sizeCommunicated = port.WritePort(writeBuffer, totalSizeCommunicated, (uint)writeBuffer.Length - totalSizeCommunicated);
if (sizeCommunicated == 0)
{
zeroProgressOccurances++;
}
else
{
totalSizeCommunicated += sizeCommunicated;
zeroProgressOccurances = 0;
}
}
return totalSizeCommunicated;
}
}
}
Il semble que l'encodage de l'éditeur de texte utilise est le identique à celui utilisé par l'imprimante. Votre éditeur indique-t-il quel encodage est utilisé? – Kurt
@Kurt J'utilise EDITOR dans l'invite de commande comme dans MS DOS. Bleu sans souris, je pense que je ne peux pas savoir quel encodage utiliser – adopilot
Essayez d'ouvrir ce fichier dans le Bloc-notes. Faites un "Enregistrer sous" pour voir quel encodage est enregistré? Je devine que ce sera ASCII & votre code C# essaye de l'écrire en Unicode (UTF-8/16). – shahkalpesh