diff options
author | Jakob Odersky <jodersky@gmail.com> | 2013-07-11 21:17:05 +0200 |
---|---|---|
committer | Jakob Odersky <jodersky@gmail.com> | 2013-07-11 21:17:27 +0200 |
commit | 0bf948aeb62a151bd4e95045261dbd38c431fb57 (patch) | |
tree | 15c218ff66799a6c5cf85a46cb47e3cbba07c341 /flow-samples/terminal/src/main/scala/com/github/jodersky/flow/samples/terminal/Main.scala | |
parent | 2ae606b0ebc3074c3ae5d0be1cb0194c21f0333d (diff) | |
download | akka-serial-0bf948aeb62a151bd4e95045261dbd38c431fb57.tar.gz akka-serial-0bf948aeb62a151bd4e95045261dbd38c431fb57.tar.bz2 akka-serial-0bf948aeb62a151bd4e95045261dbd38c431fb57.zip |
add terminal example
Diffstat (limited to 'flow-samples/terminal/src/main/scala/com/github/jodersky/flow/samples/terminal/Main.scala')
-rw-r--r-- | flow-samples/terminal/src/main/scala/com/github/jodersky/flow/samples/terminal/Main.scala | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/flow-samples/terminal/src/main/scala/com/github/jodersky/flow/samples/terminal/Main.scala b/flow-samples/terminal/src/main/scala/com/github/jodersky/flow/samples/terminal/Main.scala new file mode 100644 index 0000000..b8d332c --- /dev/null +++ b/flow-samples/terminal/src/main/scala/com/github/jodersky/flow/samples/terminal/Main.scala @@ -0,0 +1,46 @@ +package com.github.jodersky.flow +package samples.terminal + +import com.github.jodersky.flow._ +import akka.actor.ActorSystem +import akka.actor.Props +import akka.actor.actorRef2Scala +import akka.util.ByteString + +object Main { + + def defaultIfEmpty(in: String, default: String): String = if (in.isEmpty) default else in + + def ask(label: String, default: String) = { + print(s"${label} [${default}]: ") + val in = Console.readLine() + println("") + defaultIfEmpty(in, default) + } + + def main(args: Array[String]): Unit = { + 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) + println("Starting terminal, enter :q to exit.") + + internal.InternalSerial.debug(true) + val system = ActorSystem("flow") + val serial = system.actorOf(Props(classOf[SerialHandler], port, baud, cs, tsb, parity), name = "serial-handler") + + var continue = true + while (continue) { + val in = Console.readLine() + if (in == ":q") { + continue = false + serial ! "close" + } else { + serial ! ByteString(in.getBytes()) + } + } + system.shutdown() + println("Stopped terminal.") + } +}
\ No newline at end of file |