Sign in Join

Live chat for Free Pascal, Lazarus, Delphi and every Pascal programmer.

Mailing lists / lazarus-es / 2011-02

compilado en Windows Vista, no va en XP

7 messages · 4 people · –

Reply by email Subscribe to this list Your subscription

Read-only archive. Use j and k to move between messages.

Gabriel Martinez

He hecho un programita con Lazarus, con el control TOpenGlControl, dibujando dos vias que se mueven en pantalla ciclicamente, y dos cursores que manejo con dos potenciometros conectados a un Arduino, que se comunica con el ordenador via USB con una entrada serie virtual. El programa es una imitaci�n de los que utilizan en las empresas de certificado medico en espa�a para dar el certificado para renovar el carnet de conducir.
Es pqrq mi hermano que esta mayor, jeje.
El problema que encuentro es que al instalarlo en su ordenador que tiene Wind. XP da el error siguiente:
"No se encuentra el punto de entrada del procedimiento _ftol2 en la biblioteca de vinculos dinamicos msvcrt.dll
Esta compilado en W. Vista, y en el funciona bien, asi como en Linux . Que puede ser?. como puedo compilarlo para que vaya en XP?. Saludos : Gaby

Reply by email

José Mejuto
to Gabriel Martinez

Hello Gabriel,

Sunday, February 20, 2011, 9:27:22 PM, you wrote:

GM> He hecho un programita con Lazarus, con el control TOpenGlControl, GM> dibujando dos vias que se mueven en pantalla ciclicamente, y dos GM> cursores que manejo con dos potenciometros conectados a un Arduino, que GM> se comunica con el ordenador via USB con una entrada serie virtual. GM> El programa es una imitaci�n de los que utilizan en las empresas de GM> certificado medico en espa�a para dar el certificado para renovar el GM> carnet de conducir.
GM> Es pqrq mi hermano que esta mayor, jeje.
GM> El problema que encuentro es que al instalarlo en su ordenador que GM> tiene Wind. XP da el error siguiente:
GM> "No se encuentra el punto de entrada del procedimiento _ftol2 en la GM> biblioteca de vinculos dinamicos msvcrt.dll
GM> Esta compilado en W. Vista, y en el funciona bien, asi como en Linux . GM> Que puede ser?. como puedo compilarlo para que vaya en XP?. GM> Saludos : Gaby

Necesitas instalar los runtimes de Visual C 7 si no me equivoco o en otras palabras del VC 2003 o superior.

Creo que con esto ser�a suficiente:
http://www.microsoft.com/downloads/es-es/details.aspx?FamilyID=9B2DA534-3E03-4391-8A4D-074B9F2BC1BF

Best regards, Jos�

Reply by email

Gabriel Martinez

He instalado un ejecutable que se llama vcredist_x86.exe, que me instala el
Microsoft Visual C++2008 Redistributable. Pero me da el mismo mensaje de error, parece que no es correcto el msvcrt.dll

Me dice: "No se encuentra el punto de entrada del procedimiento _ftol2 en la biblioteca de vinculos dinamicos msvcrt.dll Un beso Victor J. Martinez

Reply by email

José Manuel Jover
to Gabriel Martinez

Buenas tardes:

Estoy intentando acceder a un puerto pero no consigo entrar, al utilizar las directivas asm me da un error de compilacion: Selected assembler reader not supported

el fuente es simple

   asm
     mov dx,puerto
     mov al,num
     out dx,al
   end;
  �Alguien me puede echar una mano?
   Tambien lo esto intentando con -ioperm- pero no se como hacerlo
  �Alguien me puede ayudar con esto?�Alguien sabe como escribir un integer en un puerto?.
   Si me podeis pasar un pedazo de codigo os estaria muy agradecido.
   Saludos
	Jose

Reply by email

José Manuel Jover
to Claudio Romero

Buenos dias:

Perdona, pero puede ser que no indicara el SO,

Estoy utilizando Ubuntu(linux)

Y me gustaria escribir un car�cter en un puerto, utilizando ASM u otra cosa

Gracias.

Saludos
Jose

Earlier message 15 lines
-----Mensaje original----- De: Claudio Romero [mailto:clauslack en gmail.com] Enviado el: jueves, 24 de febrero de 2011 19:25 Para: Spanish version of Lazarus List Asunto: Re: [Lazarus-es] Utilizando asm Creo que te falt� {$ASMMODE intel} No estoy seguro que Windows te deje escribir directamente al puerto. Hab�a componentes para hacerlo, pero no recuerdo cuales, podr�as buscar algo en google. Saludos

Reply by email

José Mejuto
to José Manuel Jover

Hello Jos�,

Friday, February 25, 2011, 8:08:04 AM, you wrote:

JMJ> Perdona, pero puede ser que no indicara el SO, JMJ> Estoy utilizando Ubuntu(linux)
JMJ> Y me gustaria escribir un car�cter en un puerto, utilizando ASM u otra cosa

Necesitas que tu Linux tenga un driver de modo kernel que te provea del acceso a los puertos ya que s�lo el kernel puede hacerlo.

La mayor�a de Linux vienen con este driver de serie, el ioperm. En fpc accedes a esa funci�n incluyendo en el uses la unit "libc".

Un poco m�s de informaci�n, es para "C" pero la idea es la misma.

-------------------------
Before you access any ports, you must give your program permission to do so. This is done by calling the ioperm() function (declared in unistd.h, and defined in the kernel) somewhere near the start of your program (before any I/O port accesses). The syntax is ioperm(from, num, turn_on), where from is the first port number to give access to, and num the number of consecutive ports to give access to. For example, ioperm(0x300, 5, 1) would give access to ports 0x300 through 0x304 (a total of 5 ports). The last argument is a Boolean value specifying whether to give access to the program to the ports (true (1)) or to remove access (false (0)). You can call ioperm() multiple times to enable multiple non-consecutive ports. See the ioperm(2) manual page for details on the syntax.

The ioperm() call requires your program to have root privileges; thus you need to either run it as the root user, or make it setuid root. You can drop the root privileges after you have called ioperm() to enable the ports you want to use. You are not required to explicitly drop your port access privileges with ioperm(..., 0) at the end of your program; this is done automatically as the process exits.

A setuid() to a non-root user does not disable the port access granted by ioperm(), but a fork() does (the child process does not get access, but the parent retains it).

ioperm() can only give access to ports 0x000 through 0x3ff; for higher ports, you need to use iopl() (which gives you access to all ports at once). Use the level argument 3 (i.e., iopl(3)) to give your program access to all I/O ports (so be careful --- accessing the wrong ports can do all sorts of nasty things to your computer). Again, you need root privileges to call iopl(). See the iopl(2) manual page for details.
-------------------------

http://www.faqs.org/docs/Linux-mini/IO-Port-Programming.html#s2

Best regards, Jos�

Reply by email