From f514d9d013b8059adeb4e326845f0b2b5e93ab02 Mon Sep 17 00:00:00 2001 From: Jakob Odersky Date: Fri, 11 Mar 2016 22:37:57 -0800 Subject: Clean up streaming code Closes #30 --- .../flow/samples/terminalstream/Main.scala | 36 +++++++++++++++------- 1 file changed, 25 insertions(+), 11 deletions(-) (limited to 'flow-samples') diff --git a/flow-samples/terminal-stream/src/main/scala/com/github/jodersky/flow/samples/terminalstream/Main.scala b/flow-samples/terminal-stream/src/main/scala/com/github/jodersky/flow/samples/terminalstream/Main.scala index fe3ed86..411c0fd 100644 --- a/flow-samples/terminal-stream/src/main/scala/com/github/jodersky/flow/samples/terminalstream/Main.scala +++ b/flow-samples/terminal-stream/src/main/scala/com/github/jodersky/flow/samples/terminalstream/Main.scala @@ -1,16 +1,16 @@ package com.github.jodersky.flow package samples.terminalstream -import akka.actor._ -import akka.stream._ -import akka.stream.stage._ -import akka.stream.scaladsl._ -import akka.util._ -import scala.concurrent._ +import scala.concurrent.Future import scala.concurrent.duration._ -import scala.util._ -import akka.Done -import stream._ +import scala.io.StdIn + +import akka.actor.ActorSystem +import akka.stream.ActorMaterializer +import akka.stream.scaladsl.{Flow, Keep, Sink, Source} +import akka.util.ByteString + +import stream.Serial object Main { @@ -19,11 +19,25 @@ object Main { implicit val system = ActorSystem("terminal-stream") implicit val materializer = ActorMaterializer() + def ask(label: String, default: String) = { + print(label + " [" + default.toString + "]: ") + val in = StdIn.readLine() + println("") + if (in.isEmpty) default else in + } + def main(args: Array[String]): Unit = { import system.dispatcher + val port = ask("Device", "/dev/ttyACM0") + val baud = ask("Baud rate", "115200").toInt + val cs = ask("Char size", "8").toInt + val tsb = ask("Use two stop bits", "false").toBoolean + val parity = Parity(ask("Parity (0=None, 1=Odd, 2=Even)", "0").toInt) + val settings = SerialSettings(baud, cs, tsb, parity) + val serial: Flow[ByteString, ByteString, Future[Serial.Connection]] = - Serial().open("/dev/ttyACM0", SerialSettings(115200)) + Serial().open(port, settings) val printer: Sink[ByteString, _] = Sink.foreach[ByteString]{data => println("server says: " + data.decodeString("UTF-8")) @@ -40,7 +54,7 @@ object Main { connection map { conn => println("Connected to " + conn.port) - readLine("Press enter to exit") + StdIn.readLine("Press enter to exit") } recover { case err => println("Cannot connect: " + err) } andThen { case _ => -- cgit v1.2.3