串口服务更新

Former-commit-id: 31605e97655ca0b9fae39511134c3723b9f59a51
TangShanKaiPing
wanggang 6 years ago
parent b85a56119e
commit 9d3dbbdc04

@ -37,6 +37,7 @@
<PackageReference Include="Hangfire.AspNetCore" Version="1.7.7" />
<PackageReference Include="Hangfire.MemoryStorage" Version="1.6.3" />
<PackageReference Include="Cronos" Version="0.7.0" />
<PackageReference Include="Polly" Version="7.1.1" />
</ItemGroup>
 <ItemGroup>
<EmbeddedResource Include="wwwroot\**\*" />

@ -0,0 +1,26 @@
namespace Application.Models
{
public class SPCommandModel
{
public string Name { get; set; }
public string PortName { get; set; }
public int BaudRate { get; set; }
/// <summary>
/// None=0,Odd=1,Even=2,Mark=3,Space=4
/// </summary>
public int Parity { get; set; }
public int DataBits { get; set; }
/// <summary>
/// None=0,One=1,Two=2,OnePointFive=3
/// </summary>
public int StopBits { get; set; }
/// <summary>
/// hex
/// </summary>
public string Message { get; set; }
}
}

@ -15,13 +15,10 @@
<PackageReference Include="Microsoft.Extensions.FileProviders.Embedded" Version="3.0.1" />
<PackageReference Include="Microsoft.AspNetCore.SignalR.Client" Version="3.0.0" />
<PackageReference Include="Microsoft.AspNetCore.SignalR.Client.Core" Version="3.0.0" />
<PackageReference Include="Newtonsoft.Json" Version="12.0.3" />
<PackageReference Include="Microsoft.OpenApi.Readers" Version="1.1.4" />
<PackageReference Include="SerialPortStream" Version="2.2.0" />
<PackageReference Include="NetCoreSerial" Version="1.3.2" />
<PackageReference Include="Polly" Version="7.1.1" />
<PackageReference Include="SSH.NET" Version="2016.1.0" />
<PackageReference Include="Microsoft.OpenApi.Readers" Version="1.1.4" />
<PackageReference Include="System.IO.Ports" Version="4.6.0" />
<PackageReference Include="Vibrant.InfluxDB.Client" Version="4.0.1" />
</ItemGroup>
<ItemGroup>

Before

Width:  |  Height:  |  Size: 6.6 KiB

After

Width:  |  Height:  |  Size: 6.6 KiB

@ -132,6 +132,7 @@ namespace IoTNode.DeviceServices.Onvif
Number = ipCamera.Id,
Ip = ipCamera.Ip,
Icon = "camera",
IsOnline = true,
ProductId = product.Id,
NodeId = node.Id
};

@ -1,12 +1,12 @@
using Application.Models;
using IoTNode.DeviceServices.SerialPort;
using IoTNode.DeviceServices.SerialPortManager;
using Microsoft.AspNetCore.Mvc;
using Swashbuckle.AspNetCore.Annotations;
using System;
namespace IoTNode.Controllers
{
[SwaggerTag("串口")]
[SwaggerTag("串口控制器")]
public class SerialPortController : BaseDeviceController
{
private readonly SerialPortService _deviceService;
@ -16,39 +16,22 @@ namespace IoTNode.Controllers
this._deviceService = deviceService;
}
[HttpGet, Route("/[controller]/[action]"), SwaggerOperation("")]
public ApiResponse AddButton([SwaggerParameter("网关编号")]string gateway, [SwaggerParameter("设备编号")]string number, [SwaggerParameter("名称")]string key, [SwaggerParameter("消息")]string value)
{
return this.AsyncAction(() =>
{
//this._deviceService.UpdateButtons(number, buttons);
});
}
[HttpGet, Route("/[controller]/[action]"), SwaggerOperation("")]
public ApiResponse EditButton([SwaggerParameter("网关编号")]string gateway, [SwaggerParameter("设备编号")]string number, [SwaggerParameter("名称")]string key, [SwaggerParameter("消息")]string value)
{
return this.AsyncAction(() =>
{
//this._deviceService.UpdateButtons(number, buttons);
});
}
[HttpGet, Route("/[controller]/[action]"), SwaggerOperation("")]
[HttpGet, Route("/[controller]/[action]"), SwaggerOperation("")]
public ApiResponse DeleteButton([SwaggerParameter("网关编号")]string gateway, [SwaggerParameter("设备编号")]string number, [SwaggerParameter("名称")]string key)
public ApiResponse Send([SwaggerParameter("设备编号")]string number, [SwaggerParameter("命令")]string name)
{
return this.AsyncAction(() =>
{
//this._deviceService.UpdateButtons(number, buttons);
this._deviceService.Exec(number, name);
});
}
[HttpGet, Route("/[controller]/[action]"), SwaggerOperation("")]
public ApiResponse PressButton([SwaggerParameter("网关编号")]string gateway, [SwaggerParameter("设备编号")]string number, [SwaggerParameter("按键码")]string key)
[HttpGet, Route("/[controller]/[action]"), SwaggerOperation("")]
public ApiResponse Buttons([SwaggerParameter("设备编号")]string number, [SwaggerParameter("指令")]string buttons)
{
return this.AsyncAction(() =>
{
this._deviceService.Exec(number, key);
this._deviceService.UpdateButtons(number, buttons);
});
}
}

@ -2,66 +2,60 @@
using Application.Models;
using Infrastructure.Data;
using Infrastructure.Extensions;
using IoT.Shared.Services;
using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using RJCP.IO.Ports;
using System;
using System.Collections.Generic;
using System.IO.Ports;
using System.Linq;
using System.Runtime.InteropServices;
using System.Threading;
using System.Threading.Tasks;
namespace IoTNode.DeviceServices.SerialPort
namespace IoTNode.DeviceServices.SerialPortManager
{
public class SerialPortService : BaseDeviceService
{
private const string _productNumber = "serialport";
public SerialPortService(IServiceProvider applicationServices, IConfiguration configuration)
: base(applicationServices, configuration)
{
}
public override Task StartAsync(CancellationToken cancellationToken)
{
Task.Run(() =>
{
using var scope = _applicationServices.CreateScope();
var iotNodeClient = scope.ServiceProvider.GetService<IoTNodeClient>();
var productNumber = "serialport";
var categoryRepo = scope.ServiceProvider.GetService<IRepository<Category>>();
var productRepo = scope.ServiceProvider.GetService<IRepository<Product>>();
var product = this.UpdateProduct("串口", productNumber, "/SerialPort/", "20", "serialport");
});
return base.StartAsync(cancellationToken);
}
public override void Execute()
{
Notify();
this.Notify();
}
public override Task StopAsync(CancellationToken cancellationToken)
public void Exec(string id, string name)
{
return base.StopAsync(cancellationToken);
using var scope = _applicationServices.CreateScope();
var repo = scope.ServiceProvider.GetService<IRepository<Device>>();
var deviceNumber = $"serialportonHelper.Instance.GetCPUNumber()";
var device = repo.ReadOnlyTable().Include(o => o.Data).FirstOrDefault(o => o.Number == deviceNumber);
var buttons = device.Data.FirstOrDefault(o => o.Key == "Buttons")?.Value.FromJson<List<SPCommandModel>>(); ;
var button = buttons.FirstOrDefault(o => o.Name == name);
ExecInternal(button.PortName, button.BaudRate, button.DataBits, button.Parity, button.StopBits, button.Message);
}
public void Exec(string id, string code)
internal void UpdateButtons(string number, string buttons)
{
using var scope = _applicationServices.CreateScope();
var repo = scope.ServiceProvider.GetService<IRepository<Device>>();
var device = repo.ReadOnlyTable().Include(o => o.Data).FirstOrDefault(o => o.Number == id);
var port = device.GetDataValue("SerialPort");
var baud = Convert.ToInt32(device.GetDataValue("Baud"));
var dataBits = Convert.ToInt32(device.GetDataValue("DataBits"));
var partity = Convert.ToInt32(device.GetDataValue("Partity"));
var stopBits = Convert.ToInt32(device.GetDataValue("StopBits"));
var buttonsValue = device.Data.FirstOrDefault(o => o.Key == "Buttons").Value;
var buttons = buttonsValue.FromJson<List<KeyValuePair<string, string>>>();
var message = buttons.FirstOrDefault(o => o.Key == code).Value;
ExecInternal(port, baud, dataBits, partity, stopBits, message);
using (var scope = _applicationServices.CreateScope())
{
var deviceRepo = scope.ServiceProvider.GetService<IRepository<Device>>();
var device = deviceRepo.Table().Include(o => o.Data).FirstOrDefault(o => o.Number == number);
if (device != null)
{
var data = device.Data.FirstOrDefault(o => o.Key == "Buttons");
if (data != null)
{
data.Value = buttons.FromJson<List<SPCommandModel>>().ToJson();
if (deviceRepo.SaveChanges() > 0)
{
this.SendDataToServer(data);
}
}
}
}
}
[System.Diagnostics.CodeAnalysis.SuppressMessage("Design", "CA1031:Do not catch general exception types", Justification = "<挂起>")]
@ -69,23 +63,11 @@ namespace IoTNode.DeviceServices.SerialPort
{
try
{
if (RuntimeInformation.IsOSPlatform(OSPlatform.Windows))
{
using var sp = new SerialPortStream(port, baud, dataBits, (RJCP.IO.Ports.Parity)partity, (RJCP.IO.Ports.StopBits)stopBits);
sp.Open();
var bytes = message.HexToBytes();
sp.Write(bytes, 0, bytes.Length);
sp.Flush();
sp.Close();
}
else
{
using var sp = new SerialDevice(port, (BaudRate)baud, (System.IO.Ports.Parity)partity, dataBits, (System.IO.Ports.StopBits)stopBits);
sp.Open();
var bytes = message.HexToBytes();
sp.Write(bytes);
sp.Close();
}
using var sp = new SerialPort(port, baud, (Parity)partity, dataBits, (StopBits)stopBits);
sp.Open();
var bytes = message.HexToBytes();
sp.Write(bytes, 0, bytes.Length);
sp.Close();
}
catch (Exception ex)
{
@ -95,13 +77,33 @@ namespace IoTNode.DeviceServices.SerialPort
public void Notify()
{
this.UpdateProduct("串口控制器", _productNumber, "/SerialPort/", "20", "serialport");
using var scope = _applicationServices.CreateScope();
var repo = scope.ServiceProvider.GetService<IRepository<Device>>();
var devices = repo.ReadOnlyTable().Include(o => o.Product).Include(o => o.Node).ToList();
foreach (var device in devices)
var deviceNumber = $"serialporton{Helper.Instance.GetCPUNumber()}";
var device = repo.ReadOnlyTable().Include(o => o.Data).FirstOrDefault(o => o.Number == deviceNumber);
if (device == null)
{
var deviceDto = device.To<EditDeviceModel>();
this.SendToServer(Methods.EditDevice, deviceDto);
var productRepo = scope.ServiceProvider.GetService<IRepository<Product>>();
var nodeRepo = scope.ServiceProvider.GetService<IRepository<Node>>();
var node = nodeRepo.ReadOnlyTable().FirstOrDefault();
var product = productRepo.ReadOnlyTable().FirstOrDefault(o => o.Number == _productNumber);
var name = "串口控制器";
device = new Device
{
Id = deviceNumber.ToGuid(),
Number = deviceNumber,
Name = name,
DisplayName = name,
ProductId = product.Id,
NodeId = node.Id,
IsOnline = true,
Icon = "serialport"
};
repo.Add(device);
this.UpdateDevice(repo, device);
var buttons = new List<SPCommandModel>() { new SPCommandModel { Name = "测试", PortName = "/dev/ttyS0", BaudRate = 9600, Parity = 0, DataBits = 8, StopBits = 1, Message = "" } }.ToJson();
this.UpdateData(repo, device, device.CreateData("Buttons", buttons, DeviceDataType.String, "指令", timestamp: DateTimeOffset.Now.ToUnixTimeMilliseconds()));
}
}
}

@ -17,6 +17,7 @@ using Infrastructure.Data;
using System.Linq;
using Microsoft.AspNetCore.Builder;
using Microsoft.Extensions.Logging;
using IoTNode.DeviceServices.SerialPortManager;
namespace IoTNode
{
@ -33,11 +34,11 @@ namespace IoTNode
services.AddSingleton<IoTNodeClient>();
services.AddSingleton<OnvifService>();
services.AddSingleton<FBeeService>();
//services.AddSingleton<SerialPortService>();
services.AddSingleton<SerialPortService>();
services.AddHostedService(o => o.GetService<IoTNodeClient>());
services.AddHostedService(o => o.GetService<OnvifService>());
services.AddHostedService(o => o.GetService<FBeeService>());
//services.AddHostedService(o => o.GetService<SerialPortService>());
services.AddHostedService(o => o.GetService<SerialPortService>());
base.ConfigureServices(services);
}

@ -0,0 +1,281 @@
°° . ßÛ²°²Ûß ú .
° . ú ßÛ²°²Û ú ÜÜÜ
° . Û²°²Û ÜÜ ÜÛÛßßßßßÜ
° ú ú Û²°²Û²²²²Ü ú ÛÛ²
° ú . Üܱ۲±±±²±²²Ý ÞÛÛÝ ú
° . Þ²²±±°°°° ±±²Û ú ÞÛÛÝ .
° ÜÜÜÜÜÜÜÜÜÜÜÜ Û²±±°° ܱܲ²²ß . ÜÜÜÜÜÜÜÜÜÜÜÜ ²ÛÛ
ú Ý Þ ß±±±°Û²±± ²Ü Ý Þ ß²²ÜÜÜÜÜß
Ý °þþ°°°°þ ÞÜÜÜÜÜ Ü²²±°ß²Ü°°²²Ü±²Ü Ý þ°°°°þþ° Þ ßßß
. ú Ý þþ°°þþþ° ÞÞ Û²±°°±°°° °Ü°±±±²Û Ý °þþþ°°þþ Þ ú
Ý þ°°°þ°°° ÞÞ þþ° Û²±±°°Ü²²Ü°°°°²²²ß Ý °°°þ°°°þ Þ ú
ú ÜÜÜÜÜÜÜÜÜÜ Ý þþþ°°þþþ ÞÞ þ°þþ ß±²±Û²²±±° °ÜÜß±²Ü þþþ°°þþþ Þ ÜÜÜÜÜÜÜÜÜÜ
Þ Ý Ý þ°°þþ°° ÞÞ °þ°°° ßß Û²²±±°°°°°±±²Û °°þþ°°þ° Þ Þ Ý
Þ þ°°þ°þ Ý Ý þþþ °°°þ ÞÞ þþþþ°°þ°° Û²²²±°°°Üܱ²²Ý þ°°°°þþþ Þ Þ þ°þ°°þ Ý .
Þ °þ°þ°° Ý Ý þ þ þ°þ ÞÞ þ°þþ°þ°°° ß²Üܰ°°±Þ²²ÛÞÜ þ þ°°þ Þ Þ °°þ°þ° Ý
ÜÜÜÞ þþþ°°þ Ý Ý þ þ þþ°þ ÞÞ þ þþþþ °þ° ܲ²²ß°°° Ûß°±²Û þ þ°þ Þ Þ þ°°þþþ ÝÜÜÜÜ
Þ °þ°°°° Ý Ý þ þ þ° ÞÞ þþþ °° Û²²±±±°Üܰ²²±±²²Û þ þ ÜÜ²Ý °°°°þ° Ý
þ° Þ þ°°°°þ Ý Ý þþþ °þ ÞÞ þþ þþ þ ß²²±±°° Üܲ²ÛÛÜÜܲ²²²ÛÞ þ °°°þ Ý þþ°
þ° Þ þ þ°° Ý Ý þþ þ ° ÞÞ þþþ °°° ß߱ܲ Üßß ß²ÛÛß²²²ÛÛÝÞ þ þ° Ý °þþ
° Þ ° ßßß þ þ þþ Þ þ þ ÜÜÜ þ°°° ÞÝ ²ÛÛ ß²ÛÛ þ þþ ° Ý þ °
þþ Þ hX! ÜÜÜ ² þ þ þ° Þ þ þ ÞÛÛÝ °° Üܲ²²Û ßÛÛ ßÜ þ þ þ Ý þ þ
ÛÛ ßÛ ÞÛÛ ßÛ²²²²ÛÛÛ ßÝ ßÜ
°°°°°°°° ÞÛÝ ÜÜÜÜ ° ÜÜÜ °° ÜÜÜ ° Û²ÜÜÜ ° ßß²²²ÛÛÛ ²Ü ßÜ °°°°°°°°°°
°°°°° ßÛÛßßÛÛÝ Ûß߲ݰ Ûß߲ݰ° ÛÛßß²Ý °°° ßßÛÛÛ ² ²ÜÜÜ²Ü ßÜ °°°°°°°°
°°° ÜÛÛÛÛÛÛÛÜ ÞÛÛÞÛÝ Û ÜÜÛÛÝ Û ÜÜÜÛÝ ÞÛÜ °°°°° ßÛ ß ²Ü ²Ü ßÜ °°°°°°
°° ß ß²²²Û²ÛÝÞ²² ²²ßÞ²²²Ý²²ßÞ²²²Ý²²Üßß²² °°°°° þ ° Û ²Ü ÜÜÜÜܲ²Ü °°°°
°° ß °° ÛÛÛÛÛÛÝÛÛÛÝÞÛÝ ÛÛÛ ÞÛÝ ÛÛÛÞÛÛ ÞÛÝ °°°°° ß ° Û ÜÜÛ²²²²ÛÛÛÛÛÛÜ °°
°°° þ °ÞÛÛÛÛÛÛÜÛÛÛÛ ²ÛÜÜÛÛ ²ÛÜÜÛÛÞÛÛ ° ÛÛÛÜ °°° Ü °° Û Ü²²²²²ÛÛÛÛÛÛÛÛÛÛÛ °
°°°° ° ßßß ßßßÜßß ßßÜßß ß²Ûßß ÜÛÛÛÛÛÜ Ü °°° Û Û²²²²²ÛÛÛÛÛÛÛÛÛÛÛÛÝ
°°°°°°°°°° °°°° °°°° °°° ßßßßßß °°°°° Û²²²²²ÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
°°°°°°°°°° °° °°°°°°°°°°°°°°°°°°°°°°° °° °°°°°°°°°°°°°°°°° ßÛ²²²²ÛÛÛÛÛÛÛÛÛÛÛÛÛÝ
±± ±± ßÛ²²²²ÛÛÛÛÛÛÛÛÛÛÛÝ
°°°°°°°°°° ²² °°°°°°°°°°°° ܲ² °°°°° ²² °°°°°°°°°°°°°°°°°°°° ßßÛ²²²ÛÛÛÛÛÛÛÛÛ
±±±±±±±±±± ÛÛ ±±±±±±±±±±± Û²ß ±±±±± ÛÛ ±±±±±±±±±±±±±±±±±±±±±±± ßßßß²²²²²ß
° ÛÛ ÛÛ ÛÛ °°
° ÛÛÛÛÛÛÛ² ÛÛ ²ÛÛÛÛÛÛÛÛÛÛ ÛÛÛÛÛÛÛÛÛÛ²±²ÛÛ² ²² ÜÜÛÛÛ² ²²ÛÛÛÛÛÛÛÛÛ ÛÛÛ² °° ²²
° ²Û ÛÛ ÛÛ ²Û ²Û ÛÛ ÛÛ ÜÛßß ÛÛ ÜÜ ²Û Û² °° ÛÛ
± ÛÛ ±±± ÛÛ ÛÛ ±±±± ²Û ²² ±±± ²Û ÛÛ ± ÛÛÛ² ± ²² ÛÛ ±±± ²Û Û² ±±± ÛÛ
°° ÛÛ °° ÛÛ ÛÛ °° ÛÛ ÛÛ °° ÛÛ ° ÛÛ ° ÛÛ² °°° ÛÛ °° ÛÛ °° ÛÛ °° ÛÛ
ßÛÜÜ ÛÛ ÛÛ ÜÜÛß ÛÛ ÜÜÛß ÛÛ ÛÛ ÛÛ ÜÜÛß ßÛÜÜ ÛÛ
°°°°° ßßÛÛÛ² ²ÛÛÛÛÛÛÛÛÛ² ²ÛÛÛßß °°° ²ÛÛ² ²Û °°°°°°°° ²ÛÛÛßß °°°°°°° ßßÛÛÛÛ
ÛÛ
ÛÛ
°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°° ²²
±±
Virtual Serial Port Driver 6.9.1.134 °°
ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
±±±±±±±±±±±±±±°°±±±°°±±°°±°°°±°°°°° ±°°°°°°° °°° °° ° ° ° ° °
±±±±±±±±±±±±± ±±°°±±°° ±°°° °°°°°°°° °°° °ÛßßßßßßßßßßßßßßßßßßßßßßßßßÛ
±±±±±±±±± ÜÜÜ ² ±° °± ÜÜ ÜÜ °°°°°°°° °°° °Û release information Û±±
±±±±±±±± ÛÛ ßÛ °° ßÛÜÜ ÛÛÛÛß ²²ÛÜ °°°°°°° °°° °ÛÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÛ±±
±±±±±±±± ÞÛÝ ÜÜÜÜ ± ÞÛÛÛÜÞ²ÛÛÛ ÞÛÛÛ² °°°°°° °°° °° ±±±±±±±±±±±±±±±±±±±±±±±±±±±
±±±±± ßÛÛßßÛÛݰ° ÛÛßÛݲÛÛÝ ±ÞÛ²ßÛÛÜ °°°° °°° °° ° ° ° ° °
±±± ÜÛÛÛÛÛÛÛÜ ÞÛÛ ± ÛÛÝÞÛÜÛÛݱ±ÞÛÛÝ ß²ÛÜ ±± ±±± ±± ± ± ± ± ±
ÜÜ ß ß²²²Û²ÛÝÞ²² Ü ²²Ý ²²²²ÝÜ ²²²ÝÜÜ ÞÛÛ ÜÜÜÜÜÜÜÜÜ ÜÜÜÜÜÜÜÜÜ ÜÜÜÜ ÜÜÜ ÜÜ Ü Ü
ß ÛÛÛÛÛÛÝÛÛÛÝ ÞÛÛÛ ÞÛÛÛÛ ÛÛÛ ²ÛÝ
±±± þ °ÞÛÛÛÛÛÛÜÛÛÛÛ ÛÛÛÛÜ ÛÛÛÛÝÞÛÛÛÜÜÜܲÛß ° °°° °° ° ° ° ° °
±±±± ° ßßß ßßßÜßßß ßßß²²²ßßßßßßßß °° °°° °° ° ° ° ° °
±±±°°±±±°°±±°°±° °°°±°° °°° °°°°°°°° °°° °° ° ° ° ° °
±±°°±±±°°±±°°±°°°±°°°°°±°°°°°°°°°°° °°°°°°°° °°° °° ° ° ° ° °
ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
Releaser ................. PakMan Rls type ................ cracked
Program name ................... Virtual Serial Port Driver 6.9.1.134
URL .......................... http://www.eltima.com/products/vspdxp/
Date ................. 2008 09 10 OS ....................... WinAll
ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
±±±±±±±±±±±±±±°°±±±°°±±°°±°°°±°°°°° ±°°°°°°° °°° °° ° ° ° ° °
±±±±±±±±±±±±± ±±°°±±°° ±°°° °°°°°°°° °°° °ÛßßßßßßßßßßßßßßßßßßßßßßßßßÛ
±±±±±±±±± ÜÜÜ ² ±° °± ÜÜ ÜÜ °°°°°°°° °°° °Û release notes Û±±
±±±±±±±± ÛÛ ßÛ °° ßÛÜÜ ÛÛÛÛß ²²ÛÜ °°°°°°° °°° °ÛÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÛ±±
±±±±±±±± ÞÛÝ ÜÜÜÜ ± ÞÛÛÛÜÞ²ÛÛÛ ÞÛÛÛ² °°°°°° °°° °° ±±±±±±±±±±±±±±±±±±±±±±±±±±±
±±±±± ßÛÛßßÛÛݰ° ÛÛßÛݲÛÛÝ ±ÞÛ²ßÛÛÜ °°°° °°° °° ° ° ° ° °
±±± ÜÛÛÛÛÛÛÛÜ ÞÛÛ ± ÛÛÝÞÛÜÛÛݱ±ÞÛÛÝ ß²ÛÜ ±± ±±± ±± ± ± ± ± ±
ÜÜ ß ß²²²Û²ÛÝÞ²² Ü ²²Ý ²²²²ÝÜ ²²²ÝÜÜ ÞÛÛ ÜÜÜÜÜÜÜÜÜ ÜÜÜÜÜÜÜÜÜ ÜÜÜÜ ÜÜÜ ÜÜ Ü Ü
ß ÛÛÛÛÛÛÝÛÛÛÝ ÞÛÛÛ ÞÛÛÛÛ ÛÛÛ ²ÛÝ
±±± þ °ÞÛÛÛÛÛÛÜÛÛÛÛ ÛÛÛÛÜ ÛÛÛÛÝÞÛÛÛÜÜÜܲÛß ° °°° °° ° ° ° ° °
±±±± ° ßßß ßßßÜßßß ßßß²²²ßßßßßßßß °° °°° °° ° ° ° ° °
±±±°°±±±°°±±°°±° °°°±°° °°° °°°°°°°° °°° °° ° ° ° ° °
±±°°±±±°°±±°°±°°°±°°°°°±°°°°°°°°°°° °°°°°°°° °°° °° ° ° ° ° °
ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
With Virtual Serial Port Driver you can create any number of pure
virtual serial ports in your system connected into pairs via virtual
null-modem cable without having real serial ports occupied.
ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
±±±±±±±±±±±±±±°°±±±°°±±°°±°°°±°°°°° ±°°°°°°° °°° °° ° ° ° ° °
±±±±±±±±±±±±± ±±°°±±°° ±°°° °°°°°°°° °°° °ÛßßßßßßßßßßßßßßßßßßßßßßßßßÛ
±±±±±±±±± ÜÜÜ ² ±° °± ÜÜ ÜÜ °°°°°°°° °°° °Û install notes Û±±
±±±±±±±± ÛÛ ßÛ °° ßÛÜÜ ÛÛÛÛß ²²ÛÜ °°°°°°° °°° °ÛÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÛ±±
±±±±±±±± ÞÛÝ ÜÜÜÜ ± ÞÛÛÛÜÞ²ÛÛÛ ÞÛÛÛ² °°°°°° °°° °° ±±±±±±±±±±±±±±±±±±±±±±±±±±±
±±±±± ßÛÛßßÛÛݰ° ÛÛßÛݲÛÛÝ ±ÞÛ²ßÛÛÜ °°°° °°° °° ° ° ° ° °
±±± ÜÛÛÛÛÛÛÛÜ ÞÛÛ ± ÛÛÝÞÛÜÛÛݱ±ÞÛÛÝ ß²ÛÜ ±± ±±± ±± ± ± ± ± ±
ÜÜ ß ß²²²Û²ÛÝÞ²² Ü ²²Ý ²²²²ÝÜ ²²²ÝÜÜ ÞÛÛ ÜÜÜÜÜÜÜÜÜ ÜÜÜÜÜÜÜÜÜ ÜÜÜÜ ÜÜÜ ÜÜ Ü Ü
ß ÛÛÛÛÛÛÝÛÛÛÝ ÞÛÛÛ ÞÛÛÛÛ ÛÛÛ ²ÛÝ
±±± þ °ÞÛÛÛÛÛÛÜÛÛÛÛ ÛÛÛÛÜ ÛÛÛÛÝÞÛÛÛÜÜÜܲÛß ° °°° °° ° ° ° ° °
±±±± ° ßßß ßßßÜßßß ßßß²²²ßßßßßßßß °° °°° °° ° ° ° ° °
±±±°°±±±°°±±°°±° °°°±°° °°° °°°°°°°° °°° °° ° ° ° ° °
±±°°±±±°°±±°°±°°°±°°°°°±°°°°°°°°°°° °°°°°°°° °°° °° ° ° ° ° °
ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
Step 1: Install the program
Step 2: Backup the original vspdctl.dll file
Step 3: Replace with the cracked vspdctl.dll file
Step 4: Run the application.
Enjoy!
ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
±±±±±±±±±±±±±±°°±±±°°±±°°±°°°±°°°°° ±°°°°°°° °°° °° ° ° ° ° °
±±±±±±±±±±±±± ±±°°±±°° ±°°° °°°°°°°° °°° °ÛßßßßßßßßßßßßßßßßßßßßßßßßßÛ
±±±±±±±±± ÜÜÜ ² ±° °± ÜÜ ÜÜ °°°°°°°° °°° °Û crew Û±±
±±±±±±±± ÛÛ ßÛ °° ßÛÜÜ ÛÛÛÛß ²²ÛÜ °°°°°°° °°° °ÛÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÛ±±
±±±±±±±± ÞÛÝ ÜÜÜÜ ± ÞÛÛÛÜÞ²ÛÛÛ ÞÛÛÛ² °°°°°° °°° °° ±±±±±±±±±±±±±±±±±±±±±±±±±±±
±±±±± ßÛÛßßÛÛݰ° ÛÛßÛݲÛÛÝ ±ÞÛ²ßÛÛÜ °°°° °°° °° ° ° ° ° °
±±± ÜÛÛÛÛÛÛÛÜ ÞÛÛ ± ÛÛÝÞÛÜÛÛݱ±ÞÛÛÝ ß²ÛÜ ±± ±±± ±± ± ± ± ± ±
ÜÜ ß ß²²²Û²ÛÝÞ²² Ü ²²Ý ²²²²ÝÜ ²²²ÝÜÜ ÞÛÛ ÜÜÜÜÜÜÜÜÜ ÜÜÜÜÜÜÜÜÜ ÜÜÜÜ ÜÜÜ ÜÜ Ü Ü
ß ÛÛÛÛÛÛÝÛÛÛÝ ÞÛÛÛ ÞÛÛÛÛ ÛÛÛ ²ÛÝ
±±± þ °ÞÛÛÛÛÛÛÜÛÛÛÛ ÛÛÛÛÜ ÛÛÛÛÝÞÛÛÛÜÜÜܲÛß ° °°° °° ° ° ° ° °
±±±± ° ßßß ßßßÜßßß ßßß²²²ßßßßßßßß °° °°° °° ° ° ° ° °
±±±°°±±±°°±±°°±° °°°±°° °°° °°°°°°°° °°° °° ° ° ° ° °
±±°°±±±°°±±°°±°°°±°°°°°±°°°°°°°°°°° °°°°°°°° °°° °° ° ° ° ° °
ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
[ PuNk!DuDe.........................founder/reverse engineer/coder ]
[ Cektop............................founder/reverse engineer/coder ]
[ Fungus....................................reverse engineer/coder ]
[ SuperCRacker..............................reverse engineer/coder ]
[ Ziggy.....................................reverse engineer/coder ]
[ Ufo-Pu55y...................................coder/intro designer ]
[ Al-Kaiser.......................................reverse engineer ]
[ Apocalypse......................................reverse engineer ]
[ DrPepUr.........................................reverse engineer ]
[ Encrypto........................................reverse engineer ]
[ Hawk............................................reverse engineer ]
[ HVC.............................................reverse engineer ]
[ Killboy.........................................reverse engineer ]
[ Loki............................................reverse engineer ]
[ PakMan..........................................reverse engineer ]
[ quosego.........................................reverse engineer ]
[ Sonny27.........................................reverse engineer ]
[ TeaM SnD........................................reverse engineer ]
[ +NCR/CRC!........................................tutorial author ]
[ metr0............................................tutorial author ]
[ Teddy Rogers...........................disgruntled administrator ]
[ Ecliptic...............................graphics artists/designer ]
[ 3ck5u6.............................................site operator ]
[ Bone Enterprise....................................site operator ]
[ LoL................................................site operator ]
[ The Riddler........................................site operator ]
[ Willie.............................................site operator ]
[ Xes................................................site operator ]
[ Zer0burn...........................................site operator ]
ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
±±±±±±±±±±±±±±°°±±±°°±±°°±°°°±°°°°° ±°°°°°°° °°° °° ° ° ° ° °
±±±±±±±±±±±±± ±±°°±±°° ±°°° °°°°°°°° °°° °ÛßßßßßßßßßßßßßßßßßßßßßßßßßÛ
±±±±±±±±± ÜÜÜ ² ±° °± ÜÜ ÜÜ °°°°°°°° °°° °Û news Û±±
±±±±±±±± ÛÛ ßÛ °° ßÛÜÜ ÛÛÛÛß ²²ÛÜ °°°°°°° °°° °ÛÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÛ±±
±±±±±±±± ÞÛÝ ÜÜÜÜ ± ÞÛÛÛÜÞ²ÛÛÛ ÞÛÛÛ² °°°°°° °°° °° ±±±±±±±±±±±±±±±±±±±±±±±±±±±
±±±±± ßÛÛßßÛÛݰ° ÛÛßÛݲÛÛÝ ±ÞÛ²ßÛÛÜ °°°° °°° °° ° ° ° ° °
±±± ÜÛÛÛÛÛÛÛÜ ÞÛÛ ± ÛÛÝÞÛÜÛÛݱ±ÞÛÛÝ ß²ÛÜ ±± ±±± ±± ± ± ± ± ±
ÜÜ ß ß²²²Û²ÛÝÞ²² Ü ²²Ý ²²²²ÝÜ ²²²ÝÜÜ ÞÛÛ ÜÜÜÜÜÜÜÜÜ ÜÜÜÜÜÜÜÜÜ ÜÜÜÜ ÜÜÜ ÜÜ Ü Ü
ß ÛÛÛÛÛÛÝÛÛÛÝ ÞÛÛÛ ÞÛÛÛÛ ÛÛÛ ²ÛÝ
±±± þ °ÞÛÛÛÛÛÛÜÛÛÛÛ ÛÛÛÛÜ ÛÛÛÛÝÞÛÛÛÜÜÜܲÛß ° °°° °° ° ° ° ° °
±±±± ° ßßß ßßßÜßßß ßßß²²²ßßßßßßßß °° °°° °° ° ° ° ° °
±±±°°±±±°°±±°°±° °°°±°° °°° °°°°°°°° °°° °° ° ° ° ° °
±±°°±±±°°±±°°±°°°±°°°°°±°°°°°°°°°°° °°°°°°°° °°° °° ° ° ° ° °
ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
It is hard to think that just over five years ago Seek n Destroy had
no place in the scene, a silent unknown entity yet to be born. Today,
five years on and with over 11,500 releases to look back on Seek n
Destroy are a well and truly established team that have surpassed
what many had thought would be just another minor team that would
disappear as quickly as it came. The majority of the original members
who helped to form and create Seek n Destroy have either retired or
moved on to other projects. What has made Seek n Destroy such an
enjoyable team to be a part of - at any time - is that many new and
interesting members have come forward sharing the same dreams and
desires as those original members to help keep pushing forward Seek n
Destroy to new heights that it enjoys today. Seek n Destroy is not
just a crack team it is a family and being a family I think it is
fair to say we look at each other with pride. We take pride knowing
that being a little bit different has made us that little bit better.
As a member once said, "Not many teams do it to learn and at the same
time try and help others. Forgive the self-righteous attitude, but I
think its fair to say that we rock most royally".
Live the dream... Seek n Destroy... five years bolder...
.....................................................................
If you are interested in becoming part of SnD and have knowledge and
coding skills for developing crack intros and/or demos we would love
to hear from you. Positions are open for all talented people in this
field.
.....................................................................
We continue to look for quality crackers, keygenners & unpackers -
coders who can write quality tools and utilities - demo & intro
coders - tutorial authors who can write interesting and well
structured tutorials - mod/chiptune authors (.mod, .xm, etc. ) If you
think you can be part of a friendly team and help to contribute in to
a community then feel free to find us...
ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
±±±±±±±±±±±±±±°°±±±°°±±°°±°°°±°°°°° ±°°°°°°° °°° °° ° ° ° ° °
±±±±±±±±±±±±± ±±°°±±°° ±°°° °°°°°°°° °°° °ÛßßßßßßßßßßßßßßßßßßßßßßßßßÛ
±±±±±±±±± ÜÜÜ ² ±° °± ÜÜ ÜÜ °°°°°°°° °°° °Û greetings Û±±
±±±±±±±± ÛÛ ßÛ °° ßÛÜÜ ÛÛÛÛß ²²ÛÜ °°°°°°° °°° °ÛÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÛ±±
±±±±±±±± ÞÛÝ ÜÜÜÜ ± ÞÛÛÛÜÞ²ÛÛÛ ÞÛÛÛ² °°°°°° °°° °° ±±±±±±±±±±±±±±±±±±±±±±±±±±±
±±±±± ßÛÛßßÛÛݰ° ÛÛßÛݲÛÛÝ ±ÞÛ²ßÛÛÜ °°°° °°° °° ° ° ° ° °
±±± ÜÛÛÛÛÛÛÛÜ ÞÛÛ ± ÛÛÝÞÛÜÛÛݱ±ÞÛÛÝ ß²ÛÜ ±± ±±± ±± ± ± ± ± ±
ÜÜ ß ß²²²Û²ÛÝÞ²² Ü ²²Ý ²²²²ÝÜ ²²²ÝÜÜ ÞÛÛ ÜÜÜÜÜÜÜÜÜ ÜÜÜÜÜÜÜÜÜ ÜÜÜÜ ÜÜÜ ÜÜ Ü Ü
ß ÛÛÛÛÛÛÝÛÛÛÝ ÞÛÛÛ ÞÛÛÛÛ ÛÛÛ ²ÛÝ
±±± þ °ÞÛÛÛÛÛÛÜÛÛÛÛ ÛÛÛÛÜ ÛÛÛÛÝÞÛÛÛÜÜÜܲÛß ° °°° °° ° ° ° ° °
±±±± ° ßßß ßßßÜßßß ßßß²²²ßßßßßßßß °° °°° °° ° ° ° ° °
±±±°°±±±°°±±°°±° °°°±°° °°° °°°°°°°° °°° °° ° ° ° ° °
±±°°±±±°°±±°°±°°°±°°°°°±°°°°°°°°°°° °°°°°°°° °°° °° ° ° ° ° °
ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
Over the years we have come to know and love many individuals and
many teams. Some teams still stand today and some have unfortunately
fallen to bad times. We would like to take this opportunity to thank
and give a greeting to: ArTeam, CoolPHat, CracksLatinoS, Fixdown,
ICU, MP2k, PEDiY, Resurrection, REVENGE Crew, TSRh, Unpack China,
VDown, and all at China Serials2K and the AstaLaVista guys. Not
forgetting, or course, the biggest greeting of all to YOU! :)
ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
±±±±±±±±±±±±±±°°±±±°°±±°°±°°°±°°°°° ±°°°°°°° °°° °° ° ° ° ° °
±±±±±±±±±±±±± ±±°°±±°° ±°°° °°°°°°°° °°° °ÛßßßßßßßßßßßßßßßßßßßßßßßßßÛ
±±±±±±±±± ÜÜÜ ² ±° °± ÜÜ ÜÜ °°°°°°°° °°° °Û contact Û±±
±±±±±±±± ÛÛ ßÛ °° ßÛÜÜ ÛÛÛÛß ²²ÛÜ °°°°°°° °°° °ÛÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÛ±±
±±±±±±±± ÞÛÝ ÜÜÜÜ ± ÞÛÛÛÜÞ²ÛÛÛ ÞÛÛÛ² °°°°°° °°° °° ±±±±±±±±±±±±±±±±±±±±±±±±±±±
±±±±± ßÛÛßßÛÛݰ° ÛÛßÛݲÛÛÝ ±ÞÛ²ßÛÛÜ °°°° °°° °° ° ° ° ° °
±±± ÜÛÛÛÛÛÛÛÜ ÞÛÛ ± ÛÛÝÞÛÜÛÛݱ±ÞÛÛÝ ß²ÛÜ ±± ±±± ±± ± ± ± ± ±
ÜÜ ß ß²²²Û²ÛÝÞ²² Ü ²²Ý ²²²²ÝÜ ²²²ÝÜÜ ÞÛÛ ÜÜÜÜÜÜÜÜÜ ÜÜÜÜÜÜÜÜÜ ÜÜÜÜ ÜÜÜ ÜÜ Ü Ü
ß ÛÛÛÛÛÛÝÛÛÛÝ ÞÛÛÛ ÞÛÛÛÛ ÛÛÛ ²ÛÝ
±±± þ °ÞÛÛÛÛÛÛÜÛÛÛÛ ÛÛÛÛÜ ÛÛÛÛÝÞÛÛÛÜÜÜܲÛß ° °°° °° ° ° ° ° °
±±±± ° ßßß ßßßÜßßß ßßß²²²ßßßßßßßß °° °°° °° ° ° ° ° °
±±±°°±±±°°±±°°±° °°°±°° °°° °°°°°°°° °°° °° ° ° ° ° °
±±°°±±±°°±±°°±°°°±°°°°°±°°°°°°°°°°° °°°°°°°° °°° °° ° ° ° ° °
ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
[ WWW-URL1 : .............................http://snd.astalavista.ms ]
[ WWW-URL2 : ...............................http://www.snd-team.org ]
[ Forum : .............................http://www.sndforum.da.ru ]
[ Mail : ............................... Reach us on our forum! ]
[ IRC : ............................... #seekndestroy on EFnet ]
ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
±±±±±±±±±±±±±±°°±±±°°±±°°±°°°±°°°°° ±°°°°°°° °°° °° ° ° ° ° °
±±±±±±±±±±±±± ±±°°±±°° ±°°° °°°°°°°° °°° °° ° ° ° ° °
±±±±±±±±± ÜÜÜ ² ±° °± ÜÜ ÜÜ °°°°°°°° °°° °° ° ° ° ° °
±±±±±±±± ÛÛ ßÛ °° ßÛÜÜ ÛÛÛÛß ²²ÛÜ °°°°°°° °°° °° ° ° ° ° °
±±±±±±±± ÞÛÝ ÜÜÜÜ ± ÞÛÛÛÜÞ²ÛÛÛ ÞÛÛÛ² °°°°°° °°° °° ° ° ° ° °
±±±±± ßÛÛßßÛÛݰ° ÛÛßÛݲÛÛÝ ±ÞÛ²ßÛÛÜ °°°° °°° °° ° ° ° ° °
±±± ÜÛÛÛÛÛÛÛÜ ÞÛÛ ± ÛÛÝÞÛÜÛÛݱ±ÞÛÛÝ ß²ÛÜ ±± ±±± ±± ± ± ± ± ±
ÜÜ ß ß²²²Û²ÛÝÞ²² Ü ²²Ý ²²²²ÝÜ ²²²ÝÜÜ ÞÛÛ ÜÜÜÜÜÜÜÜÜ ÜÜÜÜÜÜÜÜÜ ÜÜÜÜ ÜÜÜ ÜÜ Ü Ü
ß ÛÛÛÛÛÛÝÛÛÛÝ ÞÛÛÛ ÞÛÛÛÛ ÛÛÛ ²ÛÝ
±±± þ °ÞÛÛÛÛÛÛÜÛÛÛÛ ÛÛÛÛÜ ÛÛÛÛÝÞÛÛÛÜÜÜܲÛß ° °°° °° ° ° ° ° °
±±±± ° ßßß ßßßÜßßß ßßß²²²ßßßßßßßß °° °°° °° ° ° ° ° °
±±±°°±±±°°±±°°±° °°°±°° °°° °°°°°°°° °°° °° ° ° ° ° °
±±°°±±±°°±±°°±°°°±°°°°°±°°°°°°°°°°° °°°°°°°° °°° °° ° ° ° ° °
ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
infofile designed by haliphax of remorse productions (c) 1981
Loading…
Cancel
Save