public void GetPointsWithinBoundary(BoundingCuboid area, ref List <Point3Int <T> > points) { if (!Boundary.DoesBoundaryCuboidIntersect(area)) { return; } if (Points != null) { GetLocalPointsInCuboid(area, ref points); } else { ULF.GetPointsWithinBoundary(area, ref points); URF.GetPointsWithinBoundary(area, ref points); URB.GetPointsWithinBoundary(area, ref points); ULB.GetPointsWithinBoundary(area, ref points); BLF.GetPointsWithinBoundary(area, ref points); BRF.GetPointsWithinBoundary(area, ref points); BLB.GetPointsWithinBoundary(area, ref points); BRB.GetPointsWithinBoundary(area, ref points); } }
public static string Read(int length) { #region 读就诊卡变量 /// <summary> /// 设备ID /// </summary> int _icdev = -1; /// <summary> /// 当前IC卡号 /// </summary> int _cardId = 0; #endregion if (length > 720) { throw new ArgumentException("要读取的长度太长"); } StringBuilder data = new StringBuilder(length); //存放读取出的数据 try { int result; //设备API函数返回的结果 #region 初始化设备 //连接设备并设置波特率 _icdev = URF.rf_init(0, 9600); if (_icdev < 0) { MessageBox.Show(_icdev.ToString()); } //寻卡 result = URF.rf_card((Int16)_icdev, 1, ref _cardId); if (result != 0) { MessageBox.Show(result.ToString()); } //加载密码 result = URF.rf_load_key_hex(_icdev, 0, 0, "FFFFFFFFFFFF"); if (result != 0) { MessageBox.Show(result.ToString()); } #endregion #region 读取 int readedBlock = 0; //标识变量,标识已读取的块数 int block = length / 16; //要读取的字符长度所占的块数 if (length % 16 != 0) { block++; //如果有字符占不满一个块就多加一个 } int sector = block / 3; //字符串所占的扇区 if (block % 3 != 0) { sector++; //如果块占不满一个扇区同样多加一个扇区 } //遍历扇区 for (int sq = 1; sq <= sector; sq++) { //验证该扇区密码 result = URF.rf_authentication(_icdev, 0, sq); if (result != 0) { // MessageBox.Show(result.ToString()); } //遍历块 for (int bk = 0; bk < 3; bk++) { if (readedBlock < block) { StringBuilder tempData = new StringBuilder(64); result = URF.rf_read(_icdev, sq * 4 + bk, tempData); //如果超过16位后面的是乱码(原因未深究.) if (tempData.Length > 16) { data.Append(tempData.ToString().Substring(0, 16)); } else { data.Append(tempData.ToString()); } readedBlock++; } } } #endregion } catch (ArgumentException ex) { MessageBox.Show(ex.Message); } finally { //释放设备 if (_cardId != 0) { URF.rf_halt((Int16)_icdev); _cardId = 0; } if (_icdev > 0) { URF.rf_exit(_icdev); _icdev = -1; } } return(data.ToString()); }