diff options
Diffstat (limited to 'samples/src/main')
-rw-r--r-- | samples/src/main/scala/com/github/jodersky/flow/example/Main.scala | 44 | ||||
-rw-r--r-- | samples/src/main/scala/com/github/jodersky/flow/example/SerialHandler.scala | 36 |
2 files changed, 80 insertions, 0 deletions
diff --git a/samples/src/main/scala/com/github/jodersky/flow/example/Main.scala b/samples/src/main/scala/com/github/jodersky/flow/example/Main.scala new file mode 100644 index 0000000..20fffe2 --- /dev/null +++ b/samples/src/main/scala/com/github/jodersky/flow/example/Main.scala @@ -0,0 +1,44 @@ +package com.github.jodersky.flow +package example + +import scala.concurrent.ExecutionContext.Implicits.global +import scala.util.Success +import scala.util.Try + +import com.github.jodersky.flow.Serial +import com.github.jodersky.flow.Serial._ + +import akka.actor.ActorSystem +import akka.actor.Props +import akka.io.IO +import akka.util.ByteString + +object Main { + + def main(args: Array[String]): Unit = { + /*val isInt = Try(args(1).toInt) match { case Success(_) => true; case _ => false } + if (!(args.length == 2 && isInt)) { + println("invalid parameters") + println("parameters: port baud") + println("example: /dev/ttyACM0 115200") + return + }*/ + val port = "/dev/ttyACM0" + val baud = 115200 + + //low.Serial.debug(true) + + implicit val system = ActorSystem("flow") + val serial = system.actorOf(Props[SerialHandler], name = "serial-handler") + + IO(Serial) ! Serial.Open(serial, port, baud) + + readLine() + serial ! Write(ByteString(42)) + + readLine() + //serial ! Close + system.shutdown() + + } +}
\ No newline at end of file diff --git a/samples/src/main/scala/com/github/jodersky/flow/example/SerialHandler.scala b/samples/src/main/scala/com/github/jodersky/flow/example/SerialHandler.scala new file mode 100644 index 0000000..d228cb9 --- /dev/null +++ b/samples/src/main/scala/com/github/jodersky/flow/example/SerialHandler.scala @@ -0,0 +1,36 @@ +package com.github.jodersky.flow.example + +import com.github.jodersky.flow.Serial._ +import com.github.jodersky.flow.low.{Serial => LowSerial} +import akka.actor.Actor +import akka.actor.ActorLogging +import akka.actor.ActorRef +import akka.util.ByteString + +class SerialHandler extends Actor with ActorLogging { + var operator: Option[ActorRef] = None + + def receive = { + case Opened(operator) => this.operator = Some(operator) + + case CommandFailed(cmd, reason) => + println(s"command ${cmd} failed, reason: ${reason}") + + case Received(data) => println("received data: " + formatData(data)) + + case Close => + operator.map(_ ! Close) + + case Closed(_) => println("port closed") + + case Write(data) => { + operator.map(_ ! Write(data)) + } + + case Wrote(data) => println("wrote data: " + formatData(data)) + + } + + private def formatData(data: ByteString) = data.mkString("[",",","]") + +}
\ No newline at end of file |