zhangqian
2024-04-25 2d6875c93b25d0b7336c7fa11e066d213259fe2e
model/device_plc.go
@@ -12,7 +12,7 @@
   // DevicePlc 设备的PLC配置
   DevicePlc struct {
      gorm.Model
      CommonModel
      DeviceID   string             `gorm:"column:device_id;type:varchar(255);not null;unique" json:"deviceID"` //设备编号
      Brand      string             `gorm:"type:varchar(191)" json:"brand"`
      Method     constvar.PlcMethod `gorm:"type:varchar(191)" json:"method"`
@@ -20,8 +20,13 @@
      Port       int                `json:"port"`                             //plc 端口号,  method =  modbusTCP用
      BaudRate   int                `json:"baudRate"`                         //串口波特率, method = serial时 用
      SerialName string             `json:"serialName"`                       //串口名称,method = serial时 用
      IsOpen     bool               `json:"isOpen"`
      Detail     string             `gorm:"type:varchar(2048)" json:"-"`
      DataBit int             `gorm:"type:int(11)"  json:"dataBit"` //数据位,method = modbusRTU 用
      StopBit int             `gorm:"type:int(11)"  json:"stopBit"` //停止位,method = modbusRTU 用
      Parity  constvar.Parity `gorm:"type:int(11)"  json:"parity"`  //校验方式,method = modbusRTU 用
      IsOpen bool   `json:"isOpen"`
      Detail string `gorm:"type:varchar(2048)" json:"-"`
      Details []*DevicePlcAddress `gorm:"-" json:"details"`
@@ -36,6 +41,7 @@
      Length       int                               `json:"length"`       // 数据长度
      Type         constvar.PlcStartAddressValueType `json:"type"`         // 数据类型
      FieldName    constvar.PlcStartAddressType      `json:"fieldName"`    // 对应系统字段
      Endian       constvar.EndianType               `json:"endian"`       // 字节存储顺序,big(ABCD)/little(CDBA)/mix(CDAB)
   }
   DevicePlcSearch struct {
@@ -52,12 +58,15 @@
}
func (slf *DevicePlc) AfterFind(tx *gorm.DB) error {
   details := make([]*DevicePlcAddress, 0)
   err := json.Unmarshal([]byte(slf.Detail), &details)
   if err != nil {
      return err
   if slf.Detail != "" {
      details := make([]*DevicePlcAddress, 0)
      err := json.Unmarshal([]byte(slf.Detail), &details)
      if err != nil {
         return err
      }
      slf.Details = details
   }
   slf.Details = details
   return nil
}