From: Marcelo B. <md...@ma...> - 2000-11-14 04:29:47
|
---[ printf("Em seg, 13 nov 2000, André Casteliano escreveu"); ]--- # serialcoder wrote: # > # > Falar nisso, se você (André) e o Alex já tiverem algumas necessidades # > em mente ai, tipo "função pra resetar modem", "função pra ler ATI's # > do modem", me passem ai o que voces precisam quanto a parametros de # > entrada e saida, coisa e tal, que ai já vou caminhando nesse sentido. # # Hum... que tal: # # int modem_found(void) # # Retorna verdadeiro (1) ou falso (0). Se achou o modem retorna # verdadeiro, se não achou retorna falso... # # char *device(void) # # Essa a gente só usaria caso a func acima retornasse verdadeiro, ou seja, # indicando que tem um modem instalado. Aí a gente usa essa prá saber em # qual ttyS* esse modem está... Ok André. Só queria colocar algumas considerações: * no caso da int modem(void), você gostaria que procurasse modem em quais portas? Apenas as padrões (ttyS0 a ttyS3) ? Ou seria interessante procurar em outras? Eu nunca usei winmodens, e não sei bem como eles se comportam, já vi por ai que alguns winmodens usam ttyS15, por exemplo. Alguma informação nesse sentido poderia me ser útil. * Valores de retorno: poderia ser feito da seguinte forma: 0 = achou modem 1 = não conseguiu abrir porta 2 = abriu porta, mas estourou timeout pra receber resposta Acha válido isso, ou não? Poderia também ser feito da seguinte forma: int modem_found(char *ttyS) Além de retornar se achou modem ou não, poderia retornar em ttyS qual das seriais foi encontrado o modem. A passagem do parâmetro 'ttyS' evitaria o uso de alguma variável global. # char **modem_ati(char *device) # # A gente passa como parâmetro a saída da função anterior e recebe um # vetor com as ATI's do modem... Exatamente, o parâmetro anterior seria retornado como parâmetro, sem o uso de uma variável global. A partir daí, faço a leitura dos ATI's e escrevo a resposta no vetor, retornando o ponteiro pro mesmo. # char *ati(char *device, int ati) # # Vc passa como parâmetro além do device do modem, também a ati que vc # quer como resposta (ati 1, ati 2, etc). E a func retorna... se vc # especificar um ati inválido, a função retorna NULL... Ok, tranquilo. Nesse caso, ati pode ser um char, que já dá conta do recado. # ------------------------- [corta] # # Agora se vc tiver com mais tempo e paciência, pode aprofundar mais... :) # # char *speed(char *device) # # Retorna a velocidade do modem. # # char *model(char *device) # # Retorna o modelo do modem (USR 33.6, etc, etc, etc) A velocidade e o modelo, se não me engano, estão em um dos ATI's. Vou dar uma consultada nos comandos de modem, e ver se tem mais alguma característica interessante que possa ser usada. # int reset_modem(char *device) # # Retorna verdadeiro caso tenha resetado com sucesso o modem e falso caso # contrário Tranquilo de ser implementado tb. # ------------------------ [corta] # # É isso aí mano, se tiver mais alguma idéia ou os demais coders quiserem # complementar a minha, sintam-se à vontade... :) Beleza, vamos nessa. []s -- #=-=[ ser...@us... ]=-=+=#=--------------=# | Marcelo D. Beckmann --user[]="#173935"-- | | CL5 2.2.14 | md...@ma... UIN [53189692]----+ | Slack 7 2.2.13 # - =-#--=[ http://marcelobeckmann.cjb.net ]=--#-==-==-==-==-==-# + .~. | 233MMX 32MB 8.4+3.2GB Quantum Fireball ] /V\ #------------------466.94----[ OPL3SAx TGUI9680 2MB 33600 ] /(.)\ "Estamos de volta aos tempos em que os homens eram homens ] ^`~´^ e programavam seus próprios drivers de dispositivo."L.T. ] #-====-#----=[ serialcoder ]=- + -=[ http://wm.themes.org ]=-----' RTS-[CTS]-DLE-STX-17-39-35-CRC-F6-66-DLE-ETX-/RTS-[/CTS-RTS]-CTS-[ACK] |