package anchor;
|
import java.util.LinkedHashMap;
|
import java.util.Map;
|
|
import tbDataModel_Dell.Jiaoyan;
|
|
|
|
/**д»ùÕ¾ÅäÖÃÐÅÏ¢*/
|
public class Write_peizhi {
|
/**µØÖ· Ãû³Æ ¶Á/д ˵Ã÷
|
0x55AA °üÍ·
|
0x03 Ö¸ÁîÀàÐͲÎÊý¶Áд
|
0x55 ¶ÁÈ¡Êý¾Ý¶Î³¤¶È
|
0x03 Ó¦´ðģʽ
|
0x02 ¶ÁдÆðʼµØÖ·
|
0x2 °æ±¾ºÅ£¨2Byte£© Ö»¶Á XX.XX
|
0x4 Ä£¿éID£¨2Byte£© ¶Á/д
|
0x6 ±êǩͨѶ¼ä¸ô£¨2Byte£© ¶Á/д ·¶Î§£º100-65535£¬µ¥Î»ºÁÃë¡£Ö»ÄÜÐ޸ıêǩģ¿é¡£
|
0x8 µ¥´ÎͨѶ»ùÕ¾ÊýÁ¿ÉÏÏÞ£¨2Byte£© ¶Á/д Ò»´Î²â¾à×î¶à»ùÕ¾ÊýÁ¿
|
0xA µ¥´ÎͨѶ»ùÕ¾ÊýÁ¿ÏÂÏÞ£¨2Byte£© ¶Á/д Ò»´Î²â¾à×îÉÙ»ùÕ¾ÊýÁ¿
|
0xC ¾àÀëУ׼ֵ£¨2Byte£© ¶Á/д дģʽÏÂΪ²ÎÊýµÄ¾ßÌåÊýÖµ£¬¶ÁģʽÏÂΪ0x00
|
0xE Ä£¿éÀàÐÍ£¨2Byte£© ¶Á/д »ùÕ¾0/±êÇ©1
|
0x10 »ùÕ¾Ö÷¶¯²â¾à ¶Á/д
|
0x12 ±¨¾¯É豸 ¶Á/д
|
0x14 Çл»¾àÀë ¶Á/д
|
0x16 ±¨¾¯¾àÀë2 ¶Á/д
|
0x18 ±¨¾¯¾àÀë3 ¶Á/д
|
0x1a Åä¶ÔID ¶Á/д
|
0x1c ÐÄÌø°ü ¶Á/д
|
0x1e MODBUSģʽ ¶Á/д
|
0x20 ÁÙ½ü»ùÕ¾ÊýÁ¿ ¶Á/д
|
0x22 ÁÙ½ü»ùÕ¾1 ID ¶Á/д
|
0x24 ÁÙ½ü»ùÕ¾2 ID ¶Á/д
|
0x26 ÁÙ½ü»ùÕ¾3 ID ¶Á/д
|
0x28 ÁÙ½ü»ùÕ¾4 ID ¶Á/д
|
0x2a ÁÙ½ü»ùÕ¾5 ID ¶Á/д
|
0x2c ÁÙ½ü»ùÕ¾6 ID ¶Á/д
|
0x2e ÁÙ½ü»ùÕ¾7 ID ¶Á/д
|
0x30 ÁÙ½ü»ùÕ¾8 ID ¶Á/д
|
0x32 ÁÙ½ü»ùÕ¾9 ID ¶Á/д
|
0x34 ÁÙ½ü»ùÕ¾10 ID ¶Á/д
|
0x36 ¹¦ÂÊ ¶Á/д
|
0x38 ¼ÓËÙ¼ÆãÐÖµ ¶Á/д
|
0x3a ÎÞ¾²Ö¹ÐÝÃßʱ¼ä ¶Á/д
|
0x3c Õð¶¯Ê¹ÄÜ ¶Á/д
|
0x3e ¼ÓËÙ¼ÆÊ¹ÄÜ ¶Á/д
|
0x40 ±êǩϷ¢ÅäÖÃ״̬ ¶Á/д
|
0x42 ±êǩϷ¢ÅäÖÃID ¶Á/д
|
0x44
|
0x60 Ä£¿éÖØÆô£¨2Byte£© д дÈë1Ö´ÐÐ
|
0x62 »Ö¸´³ö³§ÉèÖã¨2Byte£© д дÈë1Ö´ÐÐ
|
0x64 ¿ªÊ¼Éý¼¶£¨2Byte£© д дÈë1Ö´ÐÐ***/
|
|
|
|
|
/**@param start ÆðʼµØÖ·
|
* @param lenthÊý¾Ý³¤¶È
|
* @param value[]¾ßÌåµÄÖµ*/
|
public static byte[] write(byte start ,byte lenth,int[] value) {
|
byte[] buf =new byte[9+lenth];
|
byte[] buf1 =new byte[5+lenth];
|
//°üÍ·
|
buf[0]=(byte) 0x55;
|
//°üÍ·
|
buf[1]=(byte) 0xAA;
|
//Ö¸ÁîÀàÐÍ
|
buf1[0]=(byte) 0x03;
|
//Êý¾Ý³¤¶È
|
buf1[1]=(byte) ((byte) 5+lenth);
|
//¶Áģʽ
|
buf1[2]=(byte) 0x02;
|
//ÆðʼµØÖ·
|
buf1[3]=(byte) start;
|
|
//¶Áд³¤¶È
|
buf1[4]=(byte) lenth;
|
|
for(int i=0;i<value.length;i++) {
|
buf1[5+2*i]=intToRegisters(value[i])[3];
|
buf1[6+2*i]=intToRegisters(value[i])[2];
|
}
|
|
for(int i=0;i<buf1.length;i++) {
|
buf[i+2]=buf1[i];
|
}
|
//УÑéÂë
|
buf[buf.length-2]=Jiaoyan.check(buf1)[1];
|
buf[buf.length-1]=Jiaoyan.check(buf1)[0];
|
return buf;
|
|
}
|
|
public static byte[] intToRegisters(int v) {
|
byte[] registers = new byte[4];
|
registers[0] = (byte) (0xff & (v >> 24));
|
registers[1] = (byte) (0xff & (v >> 16));
|
registers[2] = (byte) (0xff & (v >> 8));
|
registers[3] = (byte) (0xff & v);
|
return registers;
|
}
|
|
/**
|
* @param: [content]
|
* @return: int
|
* @description: Ê®Áù½øÖÆ×ªÊ®½øÖÆ
|
*/
|
public static int covert(String content){
|
int number=0;
|
String [] HighLetter = {"A","B","C","D","E","F"};
|
Map<String,Integer> map = new LinkedHashMap<>();
|
for(int i = 0;i <= 9;i++){
|
map.put(i+"",i);
|
}
|
for(int j= 10;j<HighLetter.length+10;j++){
|
map.put(HighLetter[j-10],j);
|
}
|
String[]str = new String[content.length()];
|
for(int i = 0; i < str.length; i++){
|
str[i] = content.substring(i,i+1);
|
}
|
for(int i = 0; i < str.length; i++){
|
number += map.get(str[i])*Math.pow(16,str.length-1-i);
|
}
|
return number;
|
}
|
|
/**½«10½øÖÆÊý×éתΪ2×Ö½ÚµÄ16½øÖÆÔÚתΪbytÊý×éÊä³ö*/
|
public static byte[] int_to_Byt(int b) {
|
String a=String.format("%04x", b);
|
final byte[] byteArray = new byte[a.length() / 2];
|
int k = 0;
|
for (int i = 0; i < byteArray.length; i++) {//ÒòΪÊÇ16½øÖÆ£¬×î¶àÖ»»áÕ¼ÓÃ4λ£¬×ª»»³É×Ö½ÚÐèÒªÁ½¸ö16½øÖƵÄ×Ö·û£¬¸ßλÔÚÏÈ
|
byte high = (byte) (Character.digit(a.charAt(k), 16) & 0xff);
|
byte low = (byte) (Character.digit(a.charAt(k + 1), 16) & 0xff);
|
byteArray[i] = (byte) (high << 4 | low);
|
k += 2;
|
}
|
return byteArray;
|
}
|
}
|