Com a chegada da nova biblioteca do framework 2.0 foram agregadas novós objetos de conexão com a porta serial, que era utilizada anteriormente uma biblioteca RS232 ou o OpenNetCF para a construção de aplicações que utilizavam esse tipo de interação.
O objeto novo dessa versão utilizado por mim para escrever dados em uma conexão serial com uma impressora de textos é o System.IO.Ports.SerialPort
Você pode inicializar todos as configurações da porta no construtor do objeto ou setar posteriormente esses dados,o mais aconselhavel por mim por ser mais facil de dar um melhor suporte na codificação.
No exemplo abaixo mando imprimir diretamente na serial um código de uma etiqueta de códigos de barra em formato CPCL. ( os códigos da etiqueta são textos puros interpretados por impressoras desse padrão, ex. Zebra)
Antes de abrir a comunicação com a porta erifico se a mesma encontra-se aberta e caso esteja, fecho a mesma possibilitando que haja o auto flush dos dados que estão em buffer e abro a conexão posteriormente.
Após a abertura da porta serial, apenas uso o metodo Writeln para imprimir o texto que eu desejar. Ao final da escrita eu fecho a porta.
Fiz também um tratamento básico de erros onde caso haja alguma excessao uma janela sera exibida com a mensagem da excessao é exibida.
Esse código abaixo funiona tanto para aplicação cliente PC como windows mobile. Vale lembrar também que usei esse codigo para imprimir em uma conexao bluetooth e funcionou corretamente pois o bluetooth quando estabelce alguma conexão com um dispositivo disponibiliza uma porta serial lógica para transmitir dados
Private Sub btnImprime_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnImprime.Click Me.btnImprime.Enabled = False 'Dim swErr As IO.StreamWriter Try porta_serial = New IO.Ports.SerialPort With porta_serial .PortName = "COM" & Me.nudCOM.Value.ToString .BaudRate = 9600 .DataBits = 8 .Parity = IO.Ports.Parity.None .StopBits = IO.Ports.StopBits.One .WriteTimeout = 4000 If .IsOpen Then .Close() .Open() .WriteLine("! 0 200 200 210 3") .WriteLine("CENTER") .WriteLine("TEXT 4 0 0 50 TESTING 001") .WriteLine("COUNT 1") .WriteLine("TEXT 7 0 0 100 Barcode Value is 123456789") .WriteLine("COUNT -10") .WriteLine("BARCODE 128 1 1 50 0 130 123456789") .WriteLine("COUNT -10") .WriteLine("JOURNAL") .WriteLine("PRINT") End With Me.porta_serial.Close() Catch ex As IO.IOException MessageBox.Show("Erro::" & ex.Message, "ERRO", MessageBoxButtons.OK, MessageBoxIcon.Asterisk, MessageBoxDefaultButton.Button1) End Try Me.btnImprime.Enabled = True End Sub