Code:
public enum MatrixPrinterCommandType
{
PrinterOperation_Beeper,
PrinterOperation_SelectPrinter,
PrinterOperation_DeselectPrinter,
PrinterOperation_TurnCutSheetFeederControlOff,
PrinterOperation_TurnCutSheetFeederControlOn,
PrinterOperation_DisablePaperOutSensor,
PrinterOperation_EnablePaperOutSensor,
PrinterOperation_SelectUnidirectionalModeForOneLine,
PrinterOperation_InitializePrinter,
PrinterOperation_CancelUnidirectionalMode,
PrinterOperation_SelectUnidirectionalMode,
PrinterOperation_TurnHalfSpeedModeOff,
PrinterOperation_TurnHalfSpeedModeOn,
PrintingStyle_Pica16DoubleStrike,
PrintingStyle_Elite32DoubleWide,
PrintingStyle_Condensed64Italic,
PrintingStyle_Emphasized128Underline,
PrintingStyle_SelectNLQRomanFont,
PrintingStyle_SelectNLQSansSerifFont,
PrintingStyle_SelectDraftMode,
PrintingStyle_SelectNLQMode,
PrintSizeAndCharacterWidth_SelectDoubleWidthForOneLine,
PrintSizeAndCharacterWidth_SelectCondensedMode,
PrintSizeAndCharacterWidth_CancelCondensedMode,
PrintSizeAndCharacterWidth_CancelOneLineDoubleWidthMode,
PrintSizeAndCharacterWidth_DoubleWidthForOneLineESC,
PrintSizeAndCharacterWidth_SelectCondensedModeESC,
PrintSizeAndCharacterWidth_SelectEliteWidth12cpi,
PrintSizeAndCharacterWidth_SelectPicaWidth10cpi,
PrintSizeAndCharacterWidth_CancelDoubleWidthMode,
PrintSizeAndCharacterWidth_SelectDoubleWidthMode,
PrintEnhancement_CancelUnderlining,
PrintEnhancement_SelectUnderlining,
PrintEnhancement_SelectEmphasizedMode,
PrintEnhancement_CancelEmphasizedMode,
PrintEnhancement_SelectDoubleStrikeMode,
PrintEnhancement_CancelDoubleStrikeMode,
PrintEnhancement_SelectSuperscript,
PrintEnhancement_SelectSubscript,
PrintEnhancement_CancelSuperscriptSubscript,
CharacterSets_SelectItalicMode,
CharacterSets_CancelItalicMode,
CharacterSets_EnablePrintingOfExtendedCharacters,
CharacterSets_DisablePrintingOfExtendedCharacters,
CharacterSets_International_USA,
CharacterSets_International_France,
CharacterSets_International_Germany,
CharacterSets_International_UnitedKingdom,
CharacterSets_International_DenmarkI,
CharacterSets_International_Sweden,
CharacterSets_International_Italy,
CharacterSets_International_Spain,
CharacterSets_International_Japan,
CharacterSets_International_Norway,
CharacterSets_International_DenmarkII,
CharacterSets_International_SpainII,
CharacterSets_International_LatinAmerica,
CharacterSets_SelectItalicCharacterSet,
CharacterSets_SelectEpsonCharacterSet,
CharacterSets_Table_PC850_Multilingual,
CharacterSets_Table_PC851_Greek,
CharacterSets_Table_PC853_Turkish,
CharacterSets_Table_PC855_Cyrillic,
CharacterSets_Table_PC860_Portuguese,
CharacterSets_Table_PC863_CanadianFrench,
CharacterSets_Table_PC865_Norwegian,
CharacterSets_Table_PC852_EasternEurope,
CharacterSets_Table_PC857_Turkish,
CharacterSets_Table_PC862_Hebrew,
CharacterSets_Table_PC864_Arabic,
CharacterSets_Table_PC866_Russian,
}
private class MatrixPrinterCommand
{
public MatrixPrinterCommandType commandType;
public string command;
public MatrixPrinterCommand(MatrixPrinterCommandType commandType, string command)
{
this.commandType = commandType;
this.command = command.Replace(" ", "");
for(int i = 0; i < characterTable.Length; i++)
this.command = this.command.Replace(characterTable[i], characterTableCode[i]);
}
private String[] characterTable = new String[] {
"NUL", "SOH", "STX", "ETX", "EOT", "ENQ", "ACK", "BEL",
"BS", "HT", "LF", "VT", "FF", "CR", "SO", "SI",
"DLE", "DC1", "DC2", "DC3", "DC4", "NAK", "SYN", "ETB",
"CAN", "EM", "SUB", "ESC", "FS", "GS", "RS", "US"
};
private String[] characterTableCode = new String[] {
"\x00", "\x01", "\x02", "\x03", "\x04", "\x05", "\x06", "\x07",
"\x08", "\x09", "\x0A", "\x0B", "\x0C", "\x0D", "\x0E", "\x0F",
"\x10", "\x11", "\x12", "\x13", "\x14", "\x15", "\x16", "\x17",
"\x18", "\x19", "\x1A", "\x1B", "\x1C", "\x1D", "\x1E", "\x1F",
};
}
private MatrixPrinterCommand[] commands = new MatrixPrinterCommand[] {
new MatrixPrinterCommand(MatrixPrinterCommandType.PrinterOperation_Beeper, "BEL"),
new MatrixPrinterCommand(MatrixPrinterCommandType.PrinterOperation_SelectPrinter, "DC1"),
new MatrixPrinterCommand(MatrixPrinterCommandType.PrinterOperation_DeselectPrinter, "DC3"),
new MatrixPrinterCommand(MatrixPrinterCommandType.PrinterOperation_TurnCutSheetFeederControlOff, "ESC EM 0"),
new MatrixPrinterCommand(MatrixPrinterCommandType.PrinterOperation_TurnCutSheetFeederControlOn, "ESC EM 4"),
new MatrixPrinterCommand(MatrixPrinterCommandType.PrinterOperation_DisablePaperOutSensor, "ESC 8"),
new MatrixPrinterCommand(MatrixPrinterCommandType.PrinterOperation_EnablePaperOutSensor, "ESC 9"),
new MatrixPrinterCommand(MatrixPrinterCommandType.PrinterOperation_SelectUnidirectionalModeForOneLine, "ESC <"),
new MatrixPrinterCommand(MatrixPrinterCommandType.PrinterOperation_InitializePrinter, "ESC @"),
new MatrixPrinterCommand(MatrixPrinterCommandType.PrinterOperation_CancelUnidirectionalMode, "ESC U 0"),
new MatrixPrinterCommand(MatrixPrinterCommandType.PrinterOperation_SelectUnidirectionalMode, "ESC U 1"),
new MatrixPrinterCommand(MatrixPrinterCommandType.PrinterOperation_TurnHalfSpeedModeOff, "ESC s 0"),
new MatrixPrinterCommand(MatrixPrinterCommandType.PrinterOperation_TurnHalfSpeedModeOn, "ESC s 1"),
new MatrixPrinterCommand(MatrixPrinterCommandType.PrintingStyle_Pica16DoubleStrike, "ESC ! 0"),
new MatrixPrinterCommand(MatrixPrinterCommandType.PrintingStyle_Elite32DoubleWide, "ESC ! 1"),
new MatrixPrinterCommand(MatrixPrinterCommandType.PrintingStyle_Condensed64Italic, "ESC ! 4"),
new MatrixPrinterCommand(MatrixPrinterCommandType.PrintingStyle_Emphasized128Underline, "ESC ! 8"),
new MatrixPrinterCommand(MatrixPrinterCommandType.PrintingStyle_SelectNLQRomanFont, "ESC k 0"),
new MatrixPrinterCommand(MatrixPrinterCommandType.PrintingStyle_SelectNLQSansSerifFont, "ESC k 1"),
new MatrixPrinterCommand(MatrixPrinterCommandType.PrintingStyle_SelectDraftMode, "ESC x 0"),
new MatrixPrinterCommand(MatrixPrinterCommandType.PrintingStyle_SelectNLQMode, "ESC x 1"),
new MatrixPrinterCommand(MatrixPrinterCommandType.PrintSizeAndCharacterWidth_SelectDoubleWidthForOneLine, "SO"),
new MatrixPrinterCommand(MatrixPrinterCommandType.PrintSizeAndCharacterWidth_SelectCondensedMode, "SI"),
new MatrixPrinterCommand(MatrixPrinterCommandType.PrintSizeAndCharacterWidth_CancelCondensedMode, "DC2"),
new MatrixPrinterCommand(MatrixPrinterCommandType.PrintSizeAndCharacterWidth_CancelOneLineDoubleWidthMode, "DC4"),
new MatrixPrinterCommand(MatrixPrinterCommandType.PrintSizeAndCharacterWidth_DoubleWidthForOneLineESC, "ESC SO"),
new MatrixPrinterCommand(MatrixPrinterCommandType.PrintSizeAndCharacterWidth_SelectCondensedModeESC, "ESC SI"),
new MatrixPrinterCommand(MatrixPrinterCommandType.PrintSizeAndCharacterWidth_SelectEliteWidth12cpi, "ESC M"),
new MatrixPrinterCommand(MatrixPrinterCommandType.PrintSizeAndCharacterWidth_SelectPicaWidth10cpi, "ESC P"),
new MatrixPrinterCommand(MatrixPrinterCommandType.PrintSizeAndCharacterWidth_CancelDoubleWidthMode, "ESC W 0"),
new MatrixPrinterCommand(MatrixPrinterCommandType.PrintSizeAndCharacterWidth_SelectDoubleWidthMode, "ESC W 1"),
new MatrixPrinterCommand(MatrixPrinterCommandType.PrintEnhancement_CancelUnderlining, "ESC - 0"),
new MatrixPrinterCommand(MatrixPrinterCommandType.PrintEnhancement_SelectUnderlining, "ESC - 1"),
new MatrixPrinterCommand(MatrixPrinterCommandType.PrintEnhancement_SelectEmphasizedMode, "ESC E"),
new MatrixPrinterCommand(MatrixPrinterCommandType.PrintEnhancement_CancelEmphasizedMode, "ESC F"),
new MatrixPrinterCommand(MatrixPrinterCommandType.PrintEnhancement_SelectDoubleStrikeMode, "ESC G"),
new MatrixPrinterCommand(MatrixPrinterCommandType.PrintEnhancement_CancelDoubleStrikeMode, "ESC H"),
new MatrixPrinterCommand(MatrixPrinterCommandType.PrintEnhancement_SelectSuperscript, "ESC S 0"),
new MatrixPrinterCommand(MatrixPrinterCommandType.PrintEnhancement_SelectSubscript, "ESC S 1"),
new MatrixPrinterCommand(MatrixPrinterCommandType.PrintEnhancement_CancelSuperscriptSubscript, "ESC T"),
new MatrixPrinterCommand(MatrixPrinterCommandType.CharacterSets_SelectItalicMode, "ESC 4"),
new MatrixPrinterCommand(MatrixPrinterCommandType.CharacterSets_CancelItalicMode, "ESC 5"),
new MatrixPrinterCommand(MatrixPrinterCommandType.CharacterSets_EnablePrintingOfExtendedCharacters, "ESC 6"),
new MatrixPrinterCommand(MatrixPrinterCommandType.CharacterSets_DisablePrintingOfExtendedCharacters, "ESC 7"),
new MatrixPrinterCommand(MatrixPrinterCommandType.CharacterSets_International_USA, "ESC R \x00"),
new MatrixPrinterCommand(MatrixPrinterCommandType.CharacterSets_International_France, "ESC R \x01"),
new MatrixPrinterCommand(MatrixPrinterCommandType.CharacterSets_International_Germany, "ESC R \x02"),
new MatrixPrinterCommand(MatrixPrinterCommandType.CharacterSets_International_UnitedKingdom, "ESC R \x03"),
new MatrixPrinterCommand(MatrixPrinterCommandType.CharacterSets_International_DenmarkI, "ESC R \x04"),
new MatrixPrinterCommand(MatrixPrinterCommandType.CharacterSets_International_Sweden, "ESC R \x05"),
new MatrixPrinterCommand(MatrixPrinterCommandType.CharacterSets_International_Italy, "ESC R \x06"),
new MatrixPrinterCommand(MatrixPrinterCommandType.CharacterSets_International_Spain, "ESC R \x07"),
new MatrixPrinterCommand(MatrixPrinterCommandType.CharacterSets_International_Japan, "ESC R \x08"),
new MatrixPrinterCommand(MatrixPrinterCommandType.CharacterSets_International_Norway, "ESC R \x09"),
new MatrixPrinterCommand(MatrixPrinterCommandType.CharacterSets_International_DenmarkII, "ESC R \x0A"),
new MatrixPrinterCommand(MatrixPrinterCommandType.CharacterSets_International_SpainII, "ESC R \x0B"),
new MatrixPrinterCommand(MatrixPrinterCommandType.CharacterSets_International_LatinAmerica, "ESC R \x0C"),
new MatrixPrinterCommand(MatrixPrinterCommandType.CharacterSets_SelectItalicCharacterSet, "ESC t NUL"),
new MatrixPrinterCommand(MatrixPrinterCommandType.CharacterSets_SelectEpsonCharacterSet, "ESC t SOH"),
new MatrixPrinterCommand(MatrixPrinterCommandType.CharacterSets_Table_PC850_Multilingual, "ESC ( t ETX NUL SOH \x03 NUL ESC t SOH"),
new MatrixPrinterCommand(MatrixPrinterCommandType.CharacterSets_Table_PC851_Greek, "ESC ( t ETX NUL SOH \x04 NUL ESC t SOH"),
new MatrixPrinterCommand(MatrixPrinterCommandType.CharacterSets_Table_PC853_Turkish, "ESC ( t ETX NUL SOH \x05 NUL ESC t SOH"),
new MatrixPrinterCommand(MatrixPrinterCommandType.CharacterSets_Table_PC855_Cyrillic, "ESC ( t ETX NUL SOH \x06 NUL ESC t SOH"),
new MatrixPrinterCommand(MatrixPrinterCommandType.CharacterSets_Table_PC860_Portuguese, "ESC ( t ETX NUL SOH \x07 NUL ESC t SOH"),
new MatrixPrinterCommand(MatrixPrinterCommandType.CharacterSets_Table_PC863_CanadianFrench, "ESC ( t ETX NUL SOH \x08 NUL ESC t SOH"),
new MatrixPrinterCommand(MatrixPrinterCommandType.CharacterSets_Table_PC865_Norwegian, "ESC ( t ETX NUL SOH \x09 NUL ESC t SOH"),
new MatrixPrinterCommand(MatrixPrinterCommandType.CharacterSets_Table_PC852_EasternEurope, "ESC ( t ETX NUL SOH \x0A NUL ESC t SOH"),
new MatrixPrinterCommand(MatrixPrinterCommandType.CharacterSets_Table_PC857_Turkish, "ESC ( t ETX NUL SOH \x0B NUL ESC t SOH"),
new MatrixPrinterCommand(MatrixPrinterCommandType.CharacterSets_Table_PC862_Hebrew, "ESC ( t ETX NUL SOH \x0C NUL ESC t SOH"),
new MatrixPrinterCommand(MatrixPrinterCommandType.CharacterSets_Table_PC864_Arabic, "ESC ( t ETX NUL SOH \x0D NUL ESC t SOH"),
new MatrixPrinterCommand(MatrixPrinterCommandType.CharacterSets_Table_PC866_Russian, "ESC ( t ETX NUL SOH \x0E NUL ESC t SOH"),
};
private static byte[] GetBytes(String text, Boolean ProcessLatinCharacters)
{
if(ProcessLatinCharacters) {
text = text.Replace('Š', (char)230);
text = text.Replace('š', (char)231);
text = text.Replace('Č', (char)172);
text = text.Replace('č', (char)159);
text = text.Replace('Ć', (char)143);
text = text.Replace('ć', (char)134);
text = text.Replace('Ž', (char)189);
text = text.Replace('ž', (char)190);
text = text.Replace('Đ', (char)209);
text = text.Replace('đ', (char)208);
byte[] temp = System.Text.Encoding.Unicode.GetBytes(text);
byte[] buffer = new byte[temp.Length / 2];
for(int i = 0, j = 0; i < temp.Length; i += 2, j++) buffer[j] = temp[i];
return buffer;
}
return System.Text.Encoding.ASCII.GetBytes(text);
}
public void SendPrinterCommand(MatrixPrinterCommandType commandType)
{
foreach(MatrixPrinterCommand command in commands)
if(command.commandType == commandType) stream.Write(GetBytes(command.command, false));
}
Code:
SendPrinterCommand(MatrixPrinterCommandType.CharacterSets_EnablePrintingOfExtendedCharacters);
SendPrinterCommand(MatrixPrinterCommandType.CharacterSets_Table_PC852_EasternEurope);
stream.Write(GetBytes("test ČĆŠĐŽ čćšđć", true));