当前位置: 首页>>代码示例>>Golang>>正文


Golang sysfs.OpenFile函数代码示例

本文整理汇总了Golang中github.com/hybridgroup/gobot/sysfs.OpenFile函数的典型用法代码示例。如果您正苦于以下问题:Golang OpenFile函数的具体用法?Golang OpenFile怎么用?Golang OpenFile使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。


在下文中一共展示了OpenFile函数的9个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Golang代码示例。

示例1: newPwmPin

// newPwmPin creates a new pwm pin with specified pin number
func newPwmPin(pinNum string, ocp string) (p *pwmPin, err error) {
	done := make(chan error, 0)
	p = &pwmPin{
		pinNum: strings.ToUpper(pinNum),
	}

	pwmDevice, err := glob(fmt.Sprintf("%v/pwm_test_%v.*", ocp, p.pinNum))
	if err != nil {
		return
	}

	p.pwmDevice = pwmDevice[0]

	go func() {
		for {
			if _, err := sysfs.OpenFile(fmt.Sprintf("%v/period", p.pwmDevice), os.O_RDONLY, 0644); err == nil {
				break
			}
		}
		for {
			if fi, err := sysfs.OpenFile(fmt.Sprintf("%v/duty", p.pwmDevice), os.O_WRONLY|os.O_APPEND, 0644); err == nil {
				defer fi.Close()
				if _, err = fi.WriteString("0"); err != nil {
					done <- err
				}
				fi.Sync()
				break
			}
		}
		for {
			if fi, err := sysfs.OpenFile(fmt.Sprintf("%v/polarity", p.pwmDevice), os.O_WRONLY|os.O_APPEND, 0644); err == nil {
				defer fi.Close()
				if _, err = fi.WriteString("0"); err != nil {
					done <- err
				}
				fi.Sync()
				break
			}
		}
		for {
			if fi, err := sysfs.OpenFile(fmt.Sprintf("%v/run", p.pwmDevice), os.O_WRONLY|os.O_APPEND, 0644); err == nil {
				defer fi.Close()
				if _, err = fi.WriteString("1"); err != nil {
					done <- err
				}
				fi.Sync()
				break
			}
		}
		done <- nil
	}()

	select {
	case err = <-done:
		return p, err
	case <-time.After(500 * time.Millisecond):
		return p, errors.New("could not initialize pwm device")
	}
}
开发者ID:aryanugroho,项目名称:gobot,代码行数:60,代码来源:pwm_pin.go

示例2: ensureSlot

func ensureSlot(slots, item string) (err error) {
	fi, err := sysfs.OpenFile(slots, os.O_RDWR|os.O_APPEND, 0666)
	defer fi.Close()
	if err != nil {
		return
	}

	// ensure the slot is not already written into the capemanager
	// (from: https://github.com/mrmorphic/hwio/blob/master/module_bb_pwm.go#L190)
	scanner := bufio.NewScanner(fi)
	for scanner.Scan() {
		line := scanner.Text()
		if strings.Index(line, item) > 0 {
			return
		}
	}

	_, err = fi.WriteString(item)
	if err != nil {
		return err
	}
	fi.Sync()

	scanner = bufio.NewScanner(fi)
	for scanner.Scan() {
		line := scanner.Text()
		if strings.Index(line, item) > 0 {
			return
		}
	}
	return
}
开发者ID:ympons,项目名称:gobot,代码行数:32,代码来源:beaglebone_adaptor.go

示例3: writeFile

func writeFile(path string, data []byte) (i int, err error) {
	file, err := sysfs.OpenFile(path, os.O_WRONLY, 0644)
	defer file.Close()
	if err != nil {
		return
	}

	return file.Write(data)
}
开发者ID:abourget,项目名称:gobot,代码行数:9,代码来源:edison_adaptor.go

示例4: release

// releae writes string to close a pwm pin
func (p *pwmPin) release() (err error) {
	fi, err := sysfs.OpenFile(fmt.Sprintf("%v/run", p.pwmDevice), os.O_WRONLY|os.O_APPEND, 0666)
	defer fi.Close()
	if err != nil {
		return
	}
	_, err = fi.WriteString("0")
	return
}
开发者ID:aryanugroho,项目名称:gobot,代码行数:10,代码来源:pwm_pin.go

示例5: piBlaster

func (r *RaspiAdaptor) piBlaster(data string) (err error) {
	fi, err := sysfs.OpenFile("/dev/pi-blaster", os.O_WRONLY|os.O_APPEND, 0644)
	defer fi.Close()

	if err != nil {
		return err
	}

	_, err = fi.WriteString(data)
	return
}
开发者ID:aryanugroho,项目名称:gobot,代码行数:11,代码来源:raspi_adaptor.go

示例6: pwmWrite

// pwmWrite writes to a pwm pin with specified period and duty
func (p *pwmPin) pwmWrite(period string, duty string) (err error) {
	f1, err := sysfs.OpenFile(fmt.Sprintf("%v/period", p.pwmDevice), os.O_WRONLY|os.O_APPEND, 0666)
	defer f1.Close()
	if err != nil {
		return
	}
	if _, err = f1.WriteString(period); err != nil {
		return
	}

	f2, err := sysfs.OpenFile(fmt.Sprintf("%v/duty", p.pwmDevice), os.O_WRONLY|os.O_APPEND, 0666)
	defer f2.Close()
	if err != nil {
		return
	}

	_, err = f2.WriteString(duty)

	return
}
开发者ID:aryanugroho,项目名称:gobot,代码行数:21,代码来源:pwm_pin.go

示例7: readFile

func readFile(path string) ([]byte, error) {
	file, err := sysfs.OpenFile(path, os.O_RDONLY, 0644)
	defer file.Close()
	if err != nil {
		return make([]byte, 0), err
	}

	buf := make([]byte, 200)
	var i = 0
	i, err = file.Read(buf)
	if i == 0 {
		return buf, err
	}
	return buf[:i], err
}
开发者ID:abourget,项目名称:gobot,代码行数:15,代码来源:edison_adaptor.go

示例8: DigitalWrite

// DigitalWrite writes a digital value to specified pin.
// valid usr pin values are usr0, usr1, usr2 and usr3
func (b *BeagleboneAdaptor) DigitalWrite(pin string, val byte) (err error) {
	if strings.Contains(pin, "usr") {
		fi, err := sysfs.OpenFile(usrLed+pin+"/brightness", os.O_WRONLY|os.O_APPEND, 0666)
		defer fi.Close()
		if err != nil {
			return err
		}
		_, err = fi.WriteString(strconv.Itoa(int(val)))
		return err
	}
	sysfsPin, err := b.digitalPin(pin, sysfs.OUT)
	if err != nil {
		return err
	}
	return sysfsPin.Write(int(val))
}
开发者ID:ympons,项目名称:gobot,代码行数:18,代码来源:beaglebone_adaptor.go

示例9: AnalogRead

// AnalogRead returns an analog value from specified pin
func (b *BeagleboneAdaptor) AnalogRead(pin string) (val int, err error) {
	analogPin, err := b.translateAnalogPin(pin)
	if err != nil {
		return
	}
	fi, err := sysfs.OpenFile(fmt.Sprintf("%v/%v", b.helper, analogPin), os.O_RDONLY, 0644)
	defer fi.Close()

	if err != nil {
		return
	}

	var buf = make([]byte, 1024)
	_, err = fi.Read(buf)
	if err != nil {
		return
	}

	val, _ = strconv.Atoi(strings.Split(string(buf), "\n")[0])
	return
}
开发者ID:ympons,项目名称:gobot,代码行数:22,代码来源:beaglebone_adaptor.go


注:本文中的github.com/hybridgroup/gobot/sysfs.OpenFile函数示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。