FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
Puerto Serie / Envio De Datos
ncesitaria saber como puedo hacer para enviar numero enteros al puerto serie para que me aplique algo en una placa que tengo conectada.. hay una forma¿¿¿¿?? estoy haciendolo en borland builder c++ 6.
me podran ayudar??? |
#2
|
||||
|
||||
en torry.net hay un componente llamado synaser, existe otro llamado serialng, que es el que más uso pero es para delphi, pero básicamente la idea es escribir en el archivo llamado COM1.
saludos
__________________
self.free; |
#3
|
|||
|
|||
Primero gracias por la respuesta, pero no encuentro eso, yo estoy usando un componenente que se ComPort, que esta instalado dentro de los componente y la libreria se llama CportLib. Esto es lo que hice yo, me funciona perfecto, solo que me envia ascii, pero haciendo la conversion yo a mano, con lo que me muestra en la tabla verifico que los datos son correctos los que se envian y los que recibo, solo que necesitaria recibir y enviar numeros enteros. Te paso lo que hice mira...
//--------------------------------------------------------------------------- #include <vcl.h> #pragma hdrstop #include "Unit1.h" //--------------------------------------------------------------------------- #pragma package(smart_init) #pragma link "CPort" #pragma resource "*.dfm" TForm1 *Form1; //--------------------------------------------------------------------------- __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { } //--------------------------------------------------------------------------- void __fastcall TForm1::btnOpenClick(TObject *Sender) { if (ComPort1->Connected) ComPort1->Close(); else ComPort1->Open(); } //--------------------------------------------------------------------------- void __fastcall TForm1::btnSettingClick(TObject *Sender) { ComPort1->ShowSetupDialog(); } //--------------------------------------------------------------------------- void __fastcall TForm1::btnSendClick(TObject *Sender) { AnsiString Str; Str = Edit1->Text; if (CheckBox1->Checked) Str = Str + "\r\n"; ComPort1->WriteStr(Str); } //--------------------------------------------------------------------------- void __fastcall TForm1::ComPort1AfterOpen(TObject *Sender) { btnOpen->Caption = "Close"; } //--------------------------------------------------------------------------- void __fastcall TForm1::ComPort1AfterClose(TObject *Sender) { btnOpen->Caption = "Open"; } //--------------------------------------------------------------------------- void __fastcall TForm1::ComPort1RxChar(TObject *Sender, int Count) { AnsiString Str; ComPort1->ReadStr(Str, Count); //ComPort1->Count; //Memo1->Text = Memo1->Text + Str; Edit2->Text =Edit2->Text + Str; } //-------------------------------------------- ***********************************/******************* Esta es la parte que tendria que modificar algo, para poder hacer que envie los numeros entero creo que habria que hacer una conversion o enviar de otea forma nose? eso es lo que no encuentro. if (CheckBox1->Checked) Str = Str + "\r\n"; ComPort1->WriteStr(Str); ???????????? ACA NO SE PODRA HACER ALGO???? |
#4
|
|||
|
|||
Hola
a ver si he entendido bien, tu lo que necesitas es mandar un entero a una tarjeta, pero la comunicacion por el puerto serie se hace mediante cadenas. Mi pregunta es si la tarjeta es capaz de hacer la conversión del caracter ascii que representa el digito, al valor del digito en si. Me refiero a que si tu envias ComPort1->WriteStr("1\r\n"); Tu tarjeta recibe ese caracter 1, cuyo valor en ascii es 49. Si ese es el caso, solo tendrias que restar 48 al caracter recibido y tendrias su valor. No se si exactamente ese es tu problema. Si no es así danos un poco más de información de como trabaja la tarjeta para ver si se nos ocurre algo. Un saludo!! |
#5
|
|||
|
|||
Serie
Si se puede usar caracteres, pero eso requiere el doble de comunicación, y necesitaria que se envien números directamente.
Ej: para mandar el número 20 en decimal, tengoq ue amndar el 2 en un byte con codigo ascii y el 0 en otro byte en ASCII, y eso me duplica el tiempo de comunación. Con boland c++ en dos podia hacerlo mandar en hexadecimal. pero aca como se podría hacer para mandar por el serie un hexa o decimal? o como convertirlo.?antes te pase mi codigo.. fijate si con eso podes darme alguna pequeña ayuda. Desde ya muchisimas gracias. |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Quiero tomar datos de puerto serie con Delphi4PHP | lsg | PHP | 1 | 09-08-2008 03:24:37 |
Quiero tomar datos de puerto serie con Lazarus y PocketPC | lsg | Lazarus, FreePascal, Kylix, etc. | 0 | 08-08-2008 21:26:42 |
Capturar datos por el puerto serie | mierda | Varios | 8 | 05-12-2007 18:23:29 |
¿Se puede capturar los datos de un puerto serie de otra aplicación? | NPIdea | Varios | 2 | 06-06-2006 13:45:19 |
Envio de datos al puerto serie COM1 | Niko | Varios | 5 | 15-03-2005 18:38:21 |
|