superpeter
Posts: 4
Joined: Sat Jun 30, 2018 5:33 am

meerdere variable in c++ script

Mon Oct 15, 2018 5:00 pm

hallo allemaal.

in onderstaand programma heb ik zelf al de mogelijkheid ge bakken dat ik 4 verschillende variable kan ontvangen.
dit werkt gelukkig in middels.
echter 2 dingen wil ik ook nog voor elkaar krijgen maar daar ben ik nog niet uit.
ik wil namelijk ook dat ik 4 variable kan toe voegen.
zodat als ik het programma ."/programa waarde1 waarde2 waarde3 waarde4" doe hij dus deze 4 variable verzend naar de slave.
en indien mogelijk zelfs optioneel een 5de optie toe voegen zo als bv test.txt zodat als het dus uit gevoerd word hij de ontvangen waardes in een txt file word op ge slagen zodat ik die later weer kan bekijken.
is dit mogelijk?
en zo ja hoe?

Code: Select all

#include <string.h>
#include <unistd.h>
#include <errno.h>
#include <stdio.h>
#include <stdlib.h>
#include <linux/i2c-dev.h>
#include <sys/ioctl.h>
#include <fcntl.h>
#include <unistd.h>
 
// The PiWeather board i2c address
#define ADDRESS 0x04
 
// The I2C bus: This is for V2 pi's. For V1 Model B you need i2c-0
static const char *devName = "/dev/i2c-1";
 
int main(int argc, char** argv) {
 
  if (argc == 1) {
    printf("Supply one or more commands to send to the Arduino\n");
    exit(1);
  }
 
  printf("I2C: Connecting\n");
  int file;
 
  if ((file = open(devName, O_RDWR)) < 0) {
    fprintf(stderr, "I2C: Failed to access %d\n", devName);
    exit(1);
  }
 
  printf("I2C: acquiring buss to 0x%x\n", ADDRESS);
 
  if (ioctl(file, I2C_SLAVE, ADDRESS) < 0) {
    fprintf(stderr, "I2C: Failed to acquire bus access/talk to slave 0x%x\n", ADDRESS);
    exit(1);
  }
 
  int arg;
 
  for (arg = 1; arg < argc; arg++) {
    int val;
    unsigned char cmd[16];
 
    if (0 == sscanf(argv[arg], "%d", &val)) {
      fprintf(stderr, "Invalid parameter %d \"%s\"\n", arg, argv[arg]);
      exit(1);
    }
 
    printf("Sending %d\n", val);
 
    cmd[0] = val;
    if (write(file, cmd, 1) == 1) {
 
      // As we are not talking to direct hardware but a microcontroller we
      // need to wait a short while so that it can respond.
      //
      // 1ms seems to be enough but it depends on what workload it has
      usleep(10000);
 
      char buf[1];
      if (read(file, buf, 1) == 1) {
    int wier = (int) buf[0];
    printf("wie %d\n", wier);
      }

      if (read(file, buf, 2) == 2) {
    int waarr = (int) buf[1];
    printf("waar %d\n", waarr);
      }
      if (read(file, buf, 3) == 3) {
    int watr = (int) buf[2];
    printf("wat %d\n", watr);
      }

      if (read(file, buf, 4) == 4) {
    int nummerr = (int) buf[3];
    printf("waarde %d\n", nummerr);
      }
    }
 
    // Now wait else you could crash the arduino by sending requests too fast
    usleep(10000);
  }
 
  close(file);
  return (EXIT_SUCCESS);
}

hopelijk kan iemand me hier verder mee helpen
groeten: peter

Return to “Nederlands”