Como acessar portas paralelas criadas pelo comando NET no Windows XP?

5

Estou tentando obter um cabo USB-para-Paralelo IEEE-1284 que é mostrado como USB Printing Support em Device manager para funcionar como uma porta LPT e tentou a resposta aqui . Usando este comando:

NET USE LPT1: \[Computer-Name]\Printer /PERSISTENT:YES

O comando é executado com sucesso, mas não consigo ver o LPT1 em dispositivos de hardware para que o endereço seja gravado nele. Eu sei que a porta que eu crio sai porque eu fiz uma aplicação Java que lista as portas Serial e Paralela usando o RXTX lib, aqui está a saída:

EuadicioneitodasasportasLPTcomocomandoNETporquemeuPCnãopossuinenhuma.MaseunãoosvejoemnenhumlugarparaobteroendereçoeoRXTXlibnãomepermiteobteroendereçodeportaAFAIK.Algumaidéiadecomoacessarasportas?

EDITAR:

Ok,paraesclarecerumpoucoascoisas,eutenhoumIEEE-1284USB-para-Paralelo,quandovocêoconectaaumamáquinacomWindowsXP,eleémostradocomoumdispositivoUSBPrintingSupport,entãoelenãoaparececomoLPTportaporquefoiprojetadoparafuncionarcomimpressoras.

Eucrieiumaimpressoracomdrivergenérico/textoeconectei-aaUSB001portporqueéaportadocaboUSB.Emseguida,compartilhoaimpressoraecrieumaLPTportusandoocomandoNET.AgoraeuqueroescreverdadosparaessaportaLPTcomoeufariacomqualqueroutraportaLPTnativausando,porexemplo, InpOut32.dll .

Se não for possível acessar a porta dessa maneira, como posso obter acesso à porta para gravar / ler dados brutos para ela? Não para imprimir um documento, mas para gravar / ler dados brutos para ele, como você faria com qualquer porta paralela.

    
por Andres 18.09.2013 / 03:10

4 respostas

1

Ok. Então você conectou um dispositivo paralelo / impressora através de um "USB-para-Paralelo IEEE-1284" -cabo para a porta USB do seu computador. Agora você precisa se comunicar diretamente com isso. Eu entendo que você não pode alterar o software diretamente para se comunicar com portas modernas como USB001 etc. como os drivers de scanners fazem. E o software que você precisa para se comunicar pelo protocolo normal para portas LPTx antigas (ou seja, 0x378 em vez de LPT1, etc.)

Isso deixa você com uma opção e isso é "emulação". Isso deve ser feito pelo driver que veio com o "USB-to-Parallel IEEE-1284" -cabo. Este driver deve fazer uma porta LPTx e capturar comunicação de portas, etc. Mas a maioria (se não todos) desses adaptadores vem com drivers que emulam uma impressora USB. Na maioria dos casos, este é o mais fácil (e mesmo no caso de programas DOS antigos isso pode ser resolvido com um comando NET ), mas quando se trata de comunicação real de porta, é inútil.

Portanto, você precisa encontrar um programa que possa emular um LPTx (e suas portas) e comunicar bidirecionalmente com (qualquer) driver USB em seu computador. Eu não encontrei um (ainda).

A única coisa útil que eu encontrei foi este Conversor de USB para Paralelo . Este emula o LPTx e as portas e se comunica diretamente com o adaptador. Eu não testei isso sozinho, mas a página de informações parece promissora. A partir do arquivo de ajuda:

The USB2LPT device and its driver enables redirecting of port access by random application software to a USB-attached parallel port, i.e. emulating a parallel port via USB. This unique solution works on all USB supporting Windows operating systems.

Ele rotula seu próprio driver como "Driver instável", mas você terá a ideia do que está procurando. Ele também precisa de um adaptador USB2LPT especial. De sua página de faq :

Q3. Can I use the USB2LPT.SYS driver with a regular (cheap) USB to parallel printer adapter?
A. Of course not! It's never possible due to design limitations of such adapters. See below.

Ele também lista como um sinal de menos para si mesmo, seu Reduced speed due to emulation (expect 10..100 times slower) . Mas permitirá a comunicação com Base address same as built-in (378h, 278h) . Se você gosta, você pode fazer seu próprio adaptador. Os esquemas estão todos no site. Aqui você pode encontre instruções completas (incluindo vídeos) sobre como construir uma. Ou então você pode enviá-lo por e-mail para detalhes sobre como conseguir um.

    
por 28.09.2013 / 12:36
1

Eu acho que você pode estar fazendo tudo errado. Você não deve usar o "NET USE", mas sim usar o driver de software do adaptador para associar uma porta de impressora virtual à porta USB. Rik publicou uma captura de tela de como isso funciona. Somente se o software do adaptador permitir, você poderá gravar como se essa porta física existisse.

O comando NET USE LPT1 que você mostrou é para quando você se conecta a uma impressora em seu próprio computador ou outro, e define essa impressora como sua impressora local (LPT1). Ele é baseado na impressão para o nome do dispositivo LPT1 e, em seguida, redirecionando isso, o que você disse que seu software não fará (exigindo uma porta de hardware).

Aqui está um driver da Startech, que faz alguns desses cabos, mas não sei se funcionará para você; Ele funciona com alguns outros modelos (incluindo aqueles que eu possuí): link

Enquanto isso, livre-se do comando NET USE; realmente não está ajudando você agora, e se você pudesse fazer com que funcionasse com a impressora local, ainda exigiria que você escrevesse para o dispositivo LPT1 (não para o local de hardware onde estaria, se existisse). )

    
por 28.09.2013 / 21:41
0

Você precisará do .NET Framework e do PowerShell, mas com esse script, você pode obter acesso a uma lista de qualquer Porta Paralela instalada em seu sistema. (+ Informações adicionais)

$strComputer = "." 

$colItems = get-wmiobject -class "Win32_ParallelPort" -namespace "root\CIMV2" ' 
-computername $strComputer 

foreach ($objItem in $colItems) { 
      write-host "Availability: " $objItem.Availability 
      write-host "Capabilities: " $objItem.Capabilities 
      write-host "Capability Descriptions: " $objItem.CapabilityDescriptions 
      write-host "Caption: " $objItem.Caption 
      write-host "Configuration Manager Error Code: " $objItem.ConfigManagerErrorCode 
      write-host "Configuration Manager User Configuration: " $objItem.ConfigManagerUserConfig 
      write-host "Creation Class Name: " $objItem.CreationClassName 
      write-host "Description: " $objItem.Description 
      write-host "Device ID: " $objItem.DeviceID 
      write-host "DMA Support: " $objItem.DMASupport 
      write-host "Error Cleared: " $objItem.ErrorCleared 
      write-host "Error Description: " $objItem.ErrorDescription 
      write-host "Installation Date: " $objItem.InstallDate 
      write-host "Last Error Code: " $objItem.LastErrorCode 
      write-host "Maximum Number Controlled: " $objItem.MaxNumberControlled 
      write-host "Name: " $objItem.Name 
      write-host "Operating System Auto-Discovered: " $objItem.OSAutoDiscovered 
      write-host "PNP DeviceID: " $objItem.PNPDeviceID 
      write-host "Powe rManagement Capabilities: " $objItem.PowerManagementCapabilities 
      write-host "Power Management Supported: " $objItem.PowerManagementSupported 
      write-host "ProtocolS upported: " $objItem.ProtocolSupported 
      write-host "Status: " $objItem.Status 
      write-host "Status Information: " $objItem.StatusInfo 
      write-host "System Creation Class Name: " $objItem.SystemCreationClassName 
      write-host "System Name: " $objItem.SystemName 
      write-host "Time Of Last Reset: " $objItem.TimeOfLastReset 
      write-host 
} 

Fonte: Technet-Microsoft

    
por 25.09.2013 / 21:28
0

(reescrevi minha resposta anterior, que não se encaixava no seu caso).

O cabo é aparentemente reconhecido pelo Windows, mas o driver deveria ter feito alguma emulação mais extensa para estar diretamente disponível para gravação.

Isso força você a inventar seu próprio dispositivo, neste caso uma impressora genérica. É perfeitamente possível que esta impressora é inutilizável porque envia códigos de controle através do cabo para o qual qualquer dispositivo está conectado do outro lado não sabe como responder. Um cabo de impressora pode, neste caso, não ser o melhor meio de conectar dispositivos.

O melhor que posso encontrar é no artigo Como lidar com o usbprint.sys onde um programa C foi desenvolvido para gravar dados diretamente em uma impressora ignorando o driver de impressão. Você poderia usar este programa simples como modelo para desenvolver seu próprio programa para gravar os dados no cabo.

Para que o programa funcione, é preciso encontrar o GUID da interface no Windows do cabo, assumindo que o cabo tenha um GUID de interface acessível. Você precisará pesquisar o registro usando regedit ou o mais rápido RegScanner .

    
por 27.09.2013 / 18:26