Henry
Henry

Reputation: 27

F# non-static methods in modules

I am an absolute newbie to coding, but I need to modify a F# script. It always gives me the error "Method or object constructor 'x' is not static". I read that this might be due to the fact that I try to call a non-static method within a module, which is by default static. For example 'x' = Get.Axis():

module Primitives =
let axis1 = Zaber.Motion.Ascii.Device.GetAxis(1)

The manual only provides code in C#: var axis1 = device.GetAxis(1); If I use static member instead of let, I'll get a 'unexpected keyword static in definition' error, although I checked the indentation as suggested in another question.

Upvotes: 1

Views: 553

Answers (1)

Aaron M. Eshbach
Aaron M. Eshbach

Reputation: 6510

Assuming you're using the Zaber Motion Library, I think what you need to do is get an instance of a device first, instead of trying to access the class in a static context.

Their documentation includes an example of how to get a list of devices by opening a serial port:

open Zaber.Motion.Ascii

use connection = Connection.OpenSerialPort("COM3")
let deviceList = connection.DetectDevices()

match deviceList |> Seq.tryHead with // See if we got at least one device
| Some device ->
    let axis = device.GetAxis(1)
    // TODO: Do whatever you want with the axis here
| None ->
    failwith "No Devices Found on COM3"

Upvotes: 3

Related Questions