Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - MAFUS

#1121
No recibes bien la cadena, según el manual no deberías recibir eso. No veo la configuración del puerto serie por ningún lado,  eso es un fallo del manual.

Veo que usas dos bits de parada. Cámbialo a 1: suele ser una configuración muy usada.

Por otra parte, si la configuración 8N1 no te funciinara cámbiala a 7N1. Veo en el manual de la comunicación con el sengundo display usa caracteres de 7 bits, pero esa no suele ser usada en comunicación con PCs.


También es común recibir caracteres extraños por no coincidir la velocidad de transmisión en los dos equipos.
Deberás realizar ensayos con diferentes configuraciones hasta obtener una cadena legible.
#1122
Estás seguro que la configuración para hablar con la balanza es esa?
A ver si va a resultar que la balanza trabaja con otra configuración en el puerto serie.

Pon marca y modelo, a ver si podemos encontrar información.

Imagínate que no se comunica con texto entendible por humanos, sino que envía enteros en grupos de bytes, o reales, u otro tipo de dato que solo podrás conocer viendo el datasheet.
#1123
Claro.
Caso B:

si ingreso_actual > ingreso_anterior
    hora_mayor_ingreso = hora_actual
    ingreso_anterior = ingreso_actual
fin si


Caso C:

si hora_anterior < hora_actual
    computar_la_factura
fin si
#1124
No se necesitan arrays para esto:
(a) es una suma de todas las entradas y una multiplicación al acabar de entrar todos los datos.
(b) es una comparación de los diferentes ingresos que se van añadiendo guardando la hora en el mismo sitio cada vez que se encuentre la mayor cuantía.
(c) es una comparación entre dos horarios, si el anterior es mayor que el actual, supongo, se descarta dicha factura (y te quedas con los datos anteriores)
(d) Supongo que irás guardando en sitios diferentes, según vendedor, lo que han vendido. Al final de todo solo debes comparar entre los tres y dar el nombre del que menos ha vendido.

Como ves todo son trabajos con variables escalares.
#1125
Parecido: cargas cada dato de la estructura en modo texto con fprintf, pon un carácter de retorno de carro.
A la hora de leer cargas los datos a la estructura convirtiéndolos a los que necesites mediante sscanf. Una vez que tienes la estructura cargada comparas los datos que necesitas.
#1126
Programación C/C++ / Re: Malloc sin stdlib
24 Junio 2016, 12:18 PM
Eso es magia...
o que el compilador incluye el archivo de cabecera por debajo porqué sabe que esto es un fallo común.
#1127
No hagas el archivo en modo texto, hazlo binario. Introduce los datos tal y como están en la estructura sin añadidos como Marca: , Modelo: , etc. Así los podrás sacar directamente y cargar una estructura cuándo los leas. De esta forma podrás comparar los datos que quieras con la estructura que habrás rellenado.
#1128
Eso es porqué al leer el tercer registro todavía no has llegado al final del archivo por eso el bucle itera una última vez.

Crea una variable tipo char (yo la llamo c) y cambia las líneas 132 y 133 por las siguientes:
while((c = fgetc(fPtr)) != EOF) {
    ungetc(c, fPtr);
#1129
Hazlo igual que en Java y Python: píllalo como cadena con %s en el scanf e imprime cada caracter  con notación de array, como en Python.
#1130
Bueno, la cadena de control no empieza por %s sino por %[.
Así como lo has puesto lo que va a hacer es recoger una cadena hasta el primer espacio/tabulador/nueva linea, después esperará los caracteres ['\n'' ' y los descartará (si aparecen otros caracteres que no sean esos el comportamiento no está definido.
De igual forma cuándo abres unos corchetes debes cerrarlos. Así la cadena de control que pretendes construir es:
%['\n' ] Nótese que hay un espacio entre el carácter de nueva línea y el corchete.
Esto hará la función espere una cadena formada por caracteres nueva línea y espacio y, al menos, deberá empezar por uno de estos dos. Cuándo se encuentre con otros caracteres distintos se detendrá.
Si lo que quieres es que capture toda la cadena hasta encontrar uno de estos caracteres debes negar esa cadena mediante el operador ^. Así:
%[^'\n' ]