Buggfix Plus
Aktuellt datum och tid: 00.18 2019-05-23

Alla tidsangivelser är UTC + 1 timme




Svara på tråd  [ 36 inlägg ]  Gå till sida Föregående  1, 2, 3
Författare Meddelande
 Inläggsrubrik: Re: Enkel Mätinsamling?
InläggPostat: 11.32 2019-01-12 
Användarvisningsbild

Blev medlem: 18.04 2009-08-16
Inlägg: 10590
Ok!
Jag gråter i och för sig inte över det i detta fallet för om jag har
kortet i en mättillämpning där jag har ett java-program som ska
hämta värden så vet jag att mätningen startar då jag kör igång
java-programmet, eller i alla fall den kod som öppnar porten.

Då är det ju lätt att fixa till en starknapp i ett gui, en knapp som
inte behöver sända några speciella startkoder till Arduinon.


Upp
 Profil  
 
 Inläggsrubrik: Re: Enkel Mätinsamling?
InläggPostat: 11.35 2019-01-12 

Blev medlem: 21.06 2011-01-29
Inlägg: 833
Det är inte att öppna porten som gör en omstart, det är DTR-linan. Deras monitor gör en tvingad omstart men gör du ett eget program kan du ju välja själv hur du vill ha det.


Upp
 Profil  
 
 Inläggsrubrik: Re: Enkel Mätinsamling?
InläggPostat: 11.41 2019-01-12 
Användarvisningsbild

Blev medlem: 18.04 2009-08-16
Inlägg: 10590
Det var intressant..

Kan du då säga vad det är i den här koden som får Aurdinon att starta om,
koden är inte helt ok tror jag för det funkar inte varje gång när jag kör den.

Ska jag skicka någon typ av DTR-kommando för att det ska fungera lika bra som
monitorn?

Kod: [Expandera/Minimera] [Hämta] (Untitled.txt)
import java.util.Scanner;
import com.fazecast.jSerialComm.SerialPort;

public class SerialMainScanner {

   public static void main(String[] args) {

      boolean AUnoFlag = false;
      int AUnoIndex = -1;
      SerialPort serialPort;
      Scanner arduinoScanIn = null;

      SerialPort[] sp = SerialPort.getCommPorts();
      System.out.println("Antal tillgängliga seriella portar: "+sp.length);
      System.out.println("===========================================");
      for(int j=0;j<sp.length;j++) {
         System.out.println(sp[j].getDescriptivePortName()+" öppen = "+sp[j].isOpen());
         if(sp[j].getDescriptivePortName().contains("Arduino Uno")){
            AUnoFlag = true;
            AUnoIndex = j;
         }
      }
      if(AUnoFlag) {
         serialPort = sp[AUnoIndex];         
         serialPort.openPort();                   // Open connection
         serialPort.setBaudRate(19200);
         serialPort.setComPortTimeouts(SerialPort.TIMEOUT_READ_SEMI_BLOCKING, 1000, 0);
         //serialPort.setComPortTimeouts(SerialPort.TIMEOUT_SCANNER, 0, 0);

         System.out.println(serialPort.getDescriptivePortName()+ " öppnad = "+serialPort.isOpen());         
         System.out.println("FlowControl "+serialPort.getFlowControlSettings());
         System.out.println("ReadTimeout "+serialPort.getReadTimeout());
         if((serialPort.bytesAvailable()>0)) {
            try
            {
               arduinoScanIn = new Scanner(serialPort.getInputStream());
               arduinoScanIn.reset();
            }
            catch(Exception  e)
            {
               e.printStackTrace();
            }
            arduinoScanIn.useDelimiter(" ");            
            System.out.println(arduinoScanIn.findInLine("START"));
            arduinoScanIn.nextLine();
            while(arduinoScanIn.hasNextLine())
            {         
               try
               {
                  System.out.println(arduinoScanIn.nextLine());
               }
               catch(Exception e)
               {
                  e.printStackTrace();
               }
            }
            arduinoScanIn.close();            
         }
         if(serialPort.isOpen())
            serialPort.closePort();
         System.out.println("End from Java!");
      }
      
   }
}



Upp
 Profil  
 
 Inläggsrubrik: Re: Enkel Mätinsamling?
InläggPostat: 12.13 2019-01-12 
Användarvisningsbild

Blev medlem: 18.04 2009-08-16
Inlägg: 10590
Jag testade med
Kod: [Expandera/Minimera] [Hämta] (Untitled.txt)
serialPort.setDTR();
serialPort.openPort();    
Thread.sleep(100);
serialPort.clearDTR();


som verkar fungera förutom att det blippar upp ett kolsvart kommadofönster vid uppstart?


Upp
 Profil  
 
 Inläggsrubrik: Re: Enkel Mätinsamling?
InläggPostat: 12.22 2019-01-12 
Användarvisningsbild

Blev medlem: 18.04 2009-08-16
Inlägg: 10590
Det här fungerar bättre och det går bra att starta om java mitt
i en insamling utan att tabellen påverkas. Dock dyker det upp
lite blippande svarta kommandotolkar. Så man undrar lite nyfiket hur
de löst det i Arduino-monitorn?

Kod: [Expandera/Minimera] [Hämta] (Untitled.txt)
serialPort.openPort();    
Thread.sleep(400);
serialPort.clearDTR();


Upp
 Profil  
 
 Inläggsrubrik: Re: Enkel Mätinsamling?
InläggPostat: 12.49 2019-01-12 
Användarvisningsbild

Blev medlem: 18.04 2009-08-16
Inlägg: 10590
Jag kom på att det i raden

serialPort.setComPortTimeouts(SerialPort.TIMEOUT_READ_SEMI_BLOCKING, 3500, 0);

är viktigt att sätta värdet (3500 i det här fallet) tillräckligt stort om man
har data som rullar in långsamt, som exempelvis vid en NTC-ohm mätning,
annars så terminerar java-programmet innan nästa mätvärde anländer.
:)
Det här börjar bli riktigt kul!


Upp
 Profil  
 
Visa inlägg nyare än:  Sortera efter  
Svara på tråd  [ 36 inlägg ]  Gå till sida Föregående  1, 2, 3

Alla tidsangivelser är UTC + 1 timme


Vilka är online

Användare som besöker denna kategori: nifelheim och 3 gäster


Du kan inte skapa nya trådar i denna kategori
Du kan inte svara på trådar i denna kategori
Du kan inte redigera dina inlägg i denna kategori
Du kan inte ta bort dina inlägg i denna kategori
Du kan inte bifoga filer i denna kategori

Sök efter:
Hoppa till:  
   
Drivs av phpBB® Forum Software © phpBB Group
Swedish translation by Peetra & phpBB Sweden © 2006-2010